SQLTERMINATOR システム変数
SQLTERMINATOR は SQL、PL/SQL の終端文字に使用される文字を設定する。
- 短縮形は SQLT
- デフォルト値 ON でセミコロン(;)
SET SQLTERMINATOR コマンド
SET SQLTERMINATOR コマンドの構文
SET SQLT[ERMINATOR] 終端文字
ON
OFF
終端文字は単一の文字で英数字、空白文字は使用できない。デフォルトは ON に設定されている。
ON と OFF : OFF にした場合には1行に複数の SQL ステートメント、PL/SQL ステートメントを記述できない上に1行の操作では SQL 実行もされない。SQL 文を実行するには SQL 文+改行+スラッシュ(/) の操作が必要となる。
ON にした場合にはセミコロン(;) がステートメントの終端文字として複数のステートメントを記述できる。
SET SQLTERMINATOR ON とは SET SQLTERMINATOR ; と同じ意味になる。
SQLTERMINATOR の設定例
SQLTERMINATOR を OFF に設定する。
SQL 文の最後にセミコロン(;) を記述しても実行されない。
SQL> SET SQLTERMINATOR OFF
SQL> select * from account;
2 /
ID USER_NAME
---------- ----------------------------------------
1 松村 大和
2 小柳 豊
3 鹿島 里奈
4 東野 美桜
5 長谷川 菜子
SQL>
上記例ではセミコロン(;) がステートメントとして受け入れられてエラーにならないのは SQL*Plus コマンドのセパレータとして解釈されているためであると思われる。SQL*Plus コマンドのセパレータを別の文字に変えると・・・
SQL> SET SQLTERMINATOR OFF
SQL> SET CMDSEP +
SQL> select * from account;
2 /
select * from account;
*
行1でエラーが発生しました。:
ORA-00911: 文字が無効です。
SQL> select * from account+
2 /
ID USER_NAME
---------- ----------------------------------------
1 松村 大和
2 小柳 豊
3 鹿島 里奈
4 東野 美桜
5 長谷川 菜子
SQL> call dbms_output.put_line('aaa');
2 /
call dbms_output.put_line('aaa');
*
行1でエラーが発生しました。:
ORA-00911: 文字が無効です。
SQL*Plusコマンドの区切り文字を設定するには・・・