在Oracle数据库中,可以使用变量来编写通用的sql语句,在运行sql语句时,为变量输入值,就会在sql语句中将变量替换成这些值。
临时变量只在使用它的sql语句中有效,变量值不能保留,临时变量也称为替换变量。在sql语句中,如果在某个变量前面使用了&符号,那么久表示该变量是一个临时变量,执行sql语句时,系统会提示用户为该变量提供一个具体的数据。
例如,在sql*plus中执行以下的命令:
SQL> select * from dept where deptno>&temp;
输入 temp 的值: 30
原值 1: select * from dept where deptno>&temp
新值 1: select * from dept where deptno>30
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
SQL>
也可以使用多个的临时变量,事例如下:
SQL> select &column_name,dname,loc from dept where &column_name>20;
输入 column_name 的值: deptno
输入 column_name 的值: deptno
原值 1: select &column_name,dname,loc from dept where &column_name>20
新值 1: select deptno,dname,loc from dept where deptno>20
DEPTNO DNAME LOC
---------- -------------- -------------
30 SALES CHICAGO
40 OPERATIONS BOSTON
在sql语句中,如果希望重新使用某个变量并且不希望重新提示输入,可以使用&&符号来定义临时变量。如下:
SQL> select &&column_name,dname,loc from dept where &&column_name>10;
输入 column_name 的值: deptno
原值 1: select &&column_name,dname,loc from dept where &&column_name>10
新值 1: select deptno,dname,loc from dept where deptno>10
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON