SQL バッファの編集、エディタで編集する
EDIT は任意のファイル、または、SQL バッファの内容を事前に設定したエディタ(※1)を使用して編集を行なうためのコマンド
(※1) _EDITOR システム変数、UNIX 系の場合には 環境変数 EDITOR も有効
UNIX 系のデフォルトエディタはラインエディタ(ed) なので使い始める前に早々と変更することをお勧めする。
⇒ SQL*Plusの動作環境を設定ファイルにしておく
EDIT コマンド
EDIT コマンドの構文
EDIT [ファイル名[.拡張子]]
短縮形
ED [ファイル名[.拡張子]]
ファイル名を省略した場合には afiedt.buf というファイル名(※2) で SQL バッファの内容を保存してエディタを起動する。
エディタを起動している間は SQL*Plus の操作はできない。(※3)
(※2) システム変数 EDITFILE で保存ファイル名を変更可能 (set editfile sqlplus.tmp)
(※3) Windows の旧バージョンのオラクルでは編集中でも SQL*Plus がモードレスで操作できてしまうものもある。
指定したファイルを編集する
スクリプトファイル go.sql を編集する。(スクリプトに限らずエディタで開けるファイルであれば何でも良い)
SQL> edit go
... エディタが起動して SQL*Plus はモーダル状態になる。
エディタ終了するとカーソルが SQL*Plus に戻る。
go.sql の内容は SQL バッファには設定されない。
SQL> @go
...
拡張子のデフォルトは SUFFIX システム変数で変更できる。
直前に実行した SQL コマンド(SQL バッファ)を編集する
SQL バッファの編集
user_name を user_nane に typo(タイプミス)した PL/SQL ブロックを編集して SQL バッファに再設定する。
SQL> declare
2 vName VARCHAR2(10);
3 begin
4 for vRec in (select user_nane from account)
5 loop
6 dbms_output.put_line(vRec.user_name);
7 end loop;
8 end;
9 /
for vRec in (select user_nane from account)
*
行4でエラーが発生しました。:
ORA-06550: 行4、列23:
PL/SQL: ORA-00904: "USER_NANE": 無効な識別子です。
ORA-06550: 行4、列16:
... エラーメッセージが続く
SQL> edit
... エディタで 4 行目の user_nane を user_name に修正して
保存終了するとカーソルが SQL*Plus に戻り編集した内容が SQL バッファに設定が表示される
...
1 declare
2 vName VARCHAR2(10);
3 begin
4 for vRec in (select user_name from account)
5 loop
6 dbms_output.put_line(vRec.user_name);
7 end loop;
8* end;
SQL> /
松村 大和
小柳 豊
鹿島 里奈
東野 美桜
長谷川 菜子
PL/SQLプロシージャが正常に完了しました。