プライマリ・コンテンツに移動
SQL*Plus®ユーザーズ・ガイドおよびリファレンス
リリース1 (12.1)
B71396-03
目次へ移動
目次
索引へ移動
索引

前
次

SQL*Plusコマンドラインでのスクリプトの編集について

様々なSQL*Plusコマンドを使用して、現在バッファに格納されているSQLコマンドまたはPL/SQLブロックを編集できます。

表5-1に、コマンドを再入力せずにバッファ内のコマンドを検証または変更できるSQL*Plusコマンドを示します。

表5-1 SQL*Plusの編集コマンド

コマンド 省略形 用途
APPEND text
A text

カレント行の末尾にテキストを追加します。

CHANGE/old/new
C/old/new

カレント行内のoldnewに変更します。

CHANGE/text
C/text

テキストをカレント行から削除します。

CLEAR BUFFER
CL BUFF

すべての行を消去します。

DEL

(なし)

カレント行を削除します。

DEL n

(なし)

nを削除します。

DEL * 

(なし)

カレント行を削除します。

DEL n *

(なし)

nからカレント行までを削除します。

DEL LAST

(なし)

最終行を削除します。

DEL m n

(なし)

ある範囲(mからn)の行を削除します。

DEL * n

(なし)

カレント行から行nまでを削除します。

INPUT
I

1つ以上の行を追加します。

INPUT text
I text

textで構成されている行を追加します。

LIST
; or L

SQLバッファ内のすべての行を表示します。

LIST n
L n or n

nを表示します。

LIST * 
L *

カレント行を表示します。

LIST n *
L n *

nからカレント行までを表示します。

LIST LAST
L LAST

最終行を表示します。

LIST m n
L m n

ある範囲(mからn)の行を表示します。

LIST * n
L * n

カレント行から行nまでを表示します。

これらのコマンドは、入力したコマンドの修正または変更に有効です。

バッファ内容の表示

SQLバッファには、最新のSQLコマンドまたはPL/SQLコマンドが含まれます。LISTおよびDEL以外のすべての編集コマンドは、バッファ内の1行にのみ影響します。その行をカレント行と呼びます。現行のコマンドまたはブロックを表示した場合、カレント行にはアスタリスクが付きます。

SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
  2  FROM EMP_DETAILS_VIEW
  3* WHERE SALARY>12000

SELECTコマンドの終わりに入力したセミコロンは表示されません。このセミコロンは、入力時にはコマンドの終わりを示すために必要ですが、SQLコマンドの一部とみなされないため、SQLバッファには格納されません。

例5-2 バッファ内容の表示

現行のコマンドを表示するとします。次のように、LISTコマンドを使用します。(例4-3の手順に従った後、SQL*Plusを終了するか、別のSQLコマンドまたはPL/SQLブロックを入力した場合は、続行する前に、その例の手順を再実行してください。)

LIST

カレント行の編集

SQL*PlusのCHANGEコマンドを使用して、カレント行を編集できます。 次のように、操作によってカレント行は異なります。

  • LISTコマンドで特定の行を表示すると、その行がカレント行になります。

  • バッファ内のコマンドを表示(LIST)または実行(RUN)した場合、コマンドの最終行がカレント行になります。(ただし、スラッシュ(/)コマンドを使用してバッファ内のコマンドを実行しても、カレント行は影響を受けません。)

  • エラーが発生した場合は、エラーが含まれている行が自動的にカレント行になります。

SELECT EMPLOYEE_ID, LAST_NAME, JO_ID, SALARY
                               *
ERROR at line 1:
ORA-00904: invalid column name

エラー・メッセージには、問合せの1行目に無効な列名が存在することが示されています。アスタリスクは、エラーの位置(綴りを誤って入力した列であるJOB_ID)を示しています。

この場合、コマンド全体を再入力せずに、バッファ内のコマンドを編集して誤りを修正できます。この時点では、エラーが含まれている行がカレント行になっています。CHANGEコマンドを使用して、誤りを修正します。このコマンドは次の3つの部分で構成され、それぞれの部分はスラッシュまたはその他の英数字以外の文字で区切られます。

  • CHANGEという単語、またはCという文字

  • 変更する文字列

  • 置換文字列

CHANGEコマンドを使用すると、カレント行の中で最初に現れる変更文字列を検索し、新しい文字列に変更できます。行全体を再入力するには、CHANGEコマンドを使用する必要はありません。

1* SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY

エラー修正の終了後は、RUNコマンドを使用してコマンドを再実行できます。

RUN

SQL*Plusでは、問合せおよびその結果が正しく表示されます。

  1  SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
  2  FROM EMP_DETAILS_VIEW
  3* WHERE JOB_ID='SA_MAN'

EMPLOYEE_ID LAST_NAME                 JOB_ID     MONTHLY SALARY
----------- ------------------------- ---------- --------------
        145 Russell                   SA_MAN            $14,000
        146 Partners                  SA_MAN            $13,500
        147 Errazuriz                 SA_MAN            $12,000
        148 Cambrault                 SA_MAN            $11,000
        149 Zlotkey                   SA_MAN            $10,500

SALARY列には、例4-4で指定した書式が保持されます。(例4-4の実行後、SQL*Plusを終了して再起動すると、列は元の書式に戻ります。)

CHANGEコマンドでの大文字と小文字の区別、およびCHANGEコマンドでワイルド・カードを使用してテキストのブロックを指定する方法については、「CHANGE」コマンドを参照してください。

例5-3 コマンド入力でのエラー

JOB_ID列を選択するつもりで誤ってJO_IDと入力したとします。1行目のJOB_IDを意図的に誤った綴りにして、次のようにコマンドを入力します。

SELECT EMPLOYEE_ID, LAST_NAME, JO_ID, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID='SA_MAN';

画面に次のメッセージが表示されます。

例5-4 エラーの修正

JO_IDをJOB_IDに変更するには、次のようにCHANGEコマンドを使用して行を変更します。

CHANGE /JO_ID/JOB_ID

修正後の行が、次のように表示されます。

行へのテキストの追加

バッファの行末にテキストを追加するには、次のようにAPPENDコマンドを使用します。

  1. LISTコマンド(または行番号)を使用して、変更する行を表示します。
  2. APPENDを入力し、その後に追加するテキストを続けて入力します。追加するテキストが空白で始まる場合は、APPENDという単語とテキストの1文字目を2つの空白で区切ります。1つはAPPENDとテキストの区切りで、もう1つはテキストとともにバッファ内に格納されます。

例5-5 行へのテキストの追加

現行の問合せの行4に空白およびDESC句を追加するには、最初に行4を次のように表示します。

LIST 4
4* ORDER BY SALARY

次のコマンドを入力します(APPENDとDESCの間には、必ず空白を2つ入力します)。

APPEND  DESC
4* ORDER BY SALARY DESC

RUNを入力して、問合せを検証します。

  1  SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
  2  FROM EMP_DETAILS_VIEW
  3  WHERE JOB_ID='SA_MAN'
  4* ORDER BY SALARY DESC

EMPLOYEE_ID LAST_NAME                 JOB_ID     MONTHLY SALARY
----------- ------------------------- ---------- --------------
        145 Russell                   SA_MAN            $14,000
        146 Partners                  SA_MAN            $13,500
        147 Errazuriz                 SA_MAN            $12,000
        148 Cambrault                 SA_MAN            $11,000
        149 Zlotkey                   SA_MAN            $10,500

新しい行の追加

カレント行の後に新しい行を挿入するには、INPUTコマンドを使用します。

行1の前に行を挿入するには、0(ゼロ)を入力し、その後にテキストを続けます。その行がバッファの先頭に挿入され、すべての行が再度1から番号付けされます。

0 SELECT EMPLOYEE_ID
4

新しい行を入力します。次に、[Return]を押します。

4 ORDER BY SALARY

次のように新しい行の入力を求めるプロンプトが再度表示されます。

5

再度[Return]を押して、これ以上入力しないことを示します。その後、RUNコマンドを使用して問合せを検証し再実行します。

  1  SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
  2  FROM EMP_DETAILS_VIEW
  3  WHERE JOB_ID='SA_MAN'
  4* ORDER BY SALARY

EMPLOYEE_ID LAST_NAME                 JOB_ID     MONTHLY SALARY
----------- ------------------------- ---------- --------------
        149 Zlotkey                   SA_MAN            $10,500
        148 Cambrault                 SA_MAN            $11,000
        147 Errazuriz                 SA_MAN            $12,000
        146 Partners                  SA_MAN            $13,500
        145 Russell                   SA_MAN            $14,000

例5-6 行の追加

例5-4で変更したSQLコマンドに4行目を追加するとします。すでに行3がカレント行なので、INPUTを入力し、[Return]を押します。

INPUT

次のように、新しい行の入力を求めるプロンプトが表示されます。

行の削除

バッファ内の行を削除するには、DELコマンドを使用します。DELを入力し、削除する行番号を指定します。

カレント行から最終行までを削除するとします。次のように、DELコマンドを使用します。

DEL * LAST

DELを実行すると、バッファの次の行がある場合は、その行がカレント行になります。

詳細は、「DEL」を参照してください。