SQL*Plus > SET SQLTERMINATOR

SQLTERMINATOR システム変数

SQLTERMINATOR は SQL、PL/SQL の終端文字に使用される文字を設定する。

  • 短縮形は SQLT
  • デフォルト値 ON でセミコロン(;)

SET SQLTERMINATOR コマンド

SET SQLTERMINATOR コマンドの構文

SET SQLTERMINATOR 終端文字
SET SQLTERMINATOR ON
SET SQLTERMINATOR OFF

短縮形

SET SQLT 終端文字
SET SQLT ON
SET SQLT OFF

デフォルト

SET SQLTERMINATOR ON

終端文字は単一の文字で英数字、空白文字は使用できない。デフォルトは 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コマンドの区切り文字を設定するには・・・

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)