OracleのSQL Plusでは置換変数を利用することによって、SQL実行時の値をユーザー指定の値に置き換えることが出来ます。
置換変数には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>