DEFINE システム変数
DEFINE は置換変数のプレフィックス(接頭語)を設定する。
- 短縮形は DEF
- デフォルト値 ON でアンパサンド(&)
SET の付かない DEFINE コマンド は変数を定義するための SQL*Plus コマンド
SET DEFINE コマンド
SET DEFINE コマンドの構文
SET DEFINE 接頭文字
SET DEFINE ON
SET DEFINE OFF
デフォルト
SET DEFINE '&'
接頭語は単一の文字で英数字、空白は使用できない。デフォルトは & に設定されている。
ON と OFF : OFF にした場合には置換変数とパラメータ置換変数の処理が行なわれない。
ON にした場合にはアンパサンド(&:アンドマーク) が接頭辞として設定される。
SET DEFINE ON は SET DEFINE & と同じ意味になる。
置換変数は単独で使用する場合には &変数名 として使用する。
&変数名xxxyyyy などと文字列が続く場合には 変数名xxxyyyy が変数名として解釈される。
そのため &変数名.xxxyyy のように後続文字列の間にドット(.) を設置することで変数名と文字列を区切りって変数名だけを認識させる。
DEFINE システム変数の設定例
メッセージ文の中にアンパサンド(&) を含める。
DEFINE がデフォルトのままだと &〜 に対して入力を要求される。(REMARK 以外のコメントでも置換変数と解釈される)
SQL> select '2進数で 111 & 001 は ' || bitand(7,1) from dual;
SQL> select '2進数で 111 & 001 は ' || bitand(7,1) from dual;
001に値を入力してください:
旧 1: select '2進数で 111 & 001 は ' || bitand(7,1) from dual
新 1: select '2進数で 111 は ' || bitand(7,1) from dual
2進数で 111 は 1
DEFINE を OFF にする
SQL> set define off
SQL> select '2進数で 111 & 001 は ' || bitand(7,1) from dual;
2進数で 111 & 001 は 1
SQL>
接頭辞を 番号記号(#) にする
SQL> set define #
SQL> select '2進数で 111 & 001 は ' || bitand(7,1) from dual;
2進数で 111 & 001 は 1
SQL>
変数 abcd と 変数 abc + d
SQL> def abc = abc
SQL> def abcd = ABCD
SQL> def str1 = &abcd
SQL> def str2 = &abc.d
SQL> define str1
DEFINE STR1 = "ABCD" (CHAR)
SQL> define str2
DEFINE STR2 = "abcd" (CHAR)