而且,&&定义了变量之后,你在同一个sqlplus会话中就不能再次为之赋值,以后都引用第一次你赋给他的值
例如:定义变量a之前
SQL> select case when &a in (1,2,3) then 5 else 6 end from dual;
输入 a 的值: 3
原值 1: select case when &a in (1,2,3) then 5 else 6 end from dual
新值 1: select case when 3 in (1,2,3) then 5 else 6 end from dual
CASEWHEN3IN(1,2,3)THEN5ELSE6END
-------------------------------
5
SQL> /
输入 a 的值: 2
原值 1: select case when &a in (1,2,3) then 5 else 6 end from dual
新值 1: select case when 2 in (1,2,3) then 5 else 6 end from dual
CASEWHEN2IN(1,2,3)THEN5ELSE6END
-------------------------------
5
SQL> /
输入 a 的值: 11
原值 1: select case when &a in (1,2,3) then 5 else 6 end from dual
新值 1: select case when 11 in (1,2,3) then 5 else 6 end from dual
CASEWHEN11IN(1,2,3)THEN5ELSE6END
--------------------------------
6
每次运行都要输入a的值
而在定义了a的值之后
SQL> select case when &&a in (1,2,3) then 5 else 6 end from dual;
输入 a 的值: 12
原值 1: select case when &&a in (1,2,3) then 5 else 6 end from dual
新值 1: select case when 12 in (1,2,3) then 5 else 6 end from dual
CASEWHEN12IN(1,2,3)THEN5ELSE6END
--------------------------------
6
再执行一开始的sql语句
SQL> select case when &a in (1,2,3) then 5 else 6 end from dual;
原值 1: select case when &a in (1,2,3) then 5 else 6 end from dual
新值 1: select case when 12 in (1,2,3) then 5 else 6 end from dual
CASEWHEN12IN(1,2,3)THEN5ELSE6END
--------------------------------
6
就不用输a的值了