OracleのSQL Plusでは置換変数を利用することによって、SQL実行時の値をユーザー指定の値に置き換えることが出来ます。
置換変数には2種類あり&置換変数と&&置換変数というのがあります。
・&置換変数
以下の例のようにwhere条件式に置換変数を利用することによって、SQL実行時に値の入力が求められます
置換変数は指定の値に置き換えられ、SQLが実行されます。
また、SQL実行時に置換変数の置き換え前後の値が表示されますが、VERIFY変数をOFFに設定することで表示を抑制することが出来ます。
・&&置換変数
&置換変数で置き換えられた値はSQL実行後に破棄されますが、&&置換変数の場合はSQL実行後も値が保持されます。
保持された値は次回のSQL実行時にも利用されます。
&&置換変数の値はDEFINEコマンドで確認し、UNDEFINEコマンドで破棄します。
置換変数には2種類あり&置換変数と&&置換変数というのがあります。
・&置換変数
以下の例のようにwhere条件式に置換変数を利用することによって、SQL実行時に値の入力が求められます
置換変数は指定の値に置き換えられ、SQLが実行されます。
SQL> SELECT empno,ename,sal,deptno
2 FROM employees
3 WHERE deptno = &deptno;
deptnoに値を入力してください: 10
旧 3: WHERE deptno = &deptno
新 3: WHERE deptno = 10
EMPNO ENAME SAL DEPTNO
---------- ---------------------------------------- ---------- ----------
1001 佐藤 500000 10
1008 中村 245000 10
1014 佐々木 230000 10
また、SQL実行時に置換変数の置き換え前後の値が表示されますが、VERIFY変数をOFFに設定することで表示を抑制することが出来ます。
SQL> SET VERIFY OFF
SQL> SELECT empno,ename,sal,deptno
2 FROM employees
3 WHERE deptno = &deptno;
deptnoに値を入力してください: 10
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
1001 佐藤 500000 10
1008 中村 245000 10
1014 佐々木 230000 10 ・&&置換変数
&置換変数で置き換えられた値はSQL実行後に破棄されますが、&&置換変数の場合はSQL実行後も値が保持されます。
SQL> SELECT empno,ename,sal,deptno
2 FROM employees
3 WHERE deptno = &&deptno;
deptnoに値を入力してください: 20
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
1002 鈴木 200000 20
1005 渡辺 280000 20
1009 小林 300000 20
1011 加藤 110000 20
1013 山田 280000 20
保持された値は次回のSQL実行時にも利用されます。
SQL> SELECT empno,ename,sal,deptno
2 FROM employees
3 WHERE deptno = &&deptno;
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
1002 鈴木 200000 20
1005 渡辺 280000 20
1009 小林 300000 20
1011 加藤 110000 20
1013 山田 280000 20 &&置換変数の値はDEFINEコマンドで確認し、UNDEFINEコマンドで破棄します。
SQL> DEFINE deptno
DEFINE DEPTNO = "20" (CHAR)
SQL> UNDEFINE deptno
SQL> DEFINE deptno
SP2-0135: 記号 deptnoは定義されていません。
SQL>

コメント