様々なSQL*Plusコマンドを使用して、現在バッファに格納されているSQLコマンドまたはPL/SQLブロックを編集できます。
表5-1に、コマンドを再入力せずにバッファ内のコマンドを検証または変更できるSQL*Plusコマンドを示します。
表5-1 SQL*Plusの編集コマンド
これらのコマンドは、入力したコマンドの修正または変更に有効です。
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
バッファ内のコマンドを表示(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
修正後の行が、次のように表示されます。
例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」を参照してください。