轮换变量&和&&

轮换变量可作为是占位符

壹 、 单个&符号替换

     
 SQL语句中最基本、最常见因素交替格局是单个&符号替换。&符号是用来在言语中钦点替换变量的记号。当执行语句时,Oracle服务器处理语句,发现替换变量,并尝试用上面三种方式之一来解析变量的值。首先,它检查在用户会话中是否定义了该变量(DEFINE命令)。倘使没有,用户进度会唤起输入多个值,那一个值会替换变量。

       如下所示:

SQL> select ename,sal from emp where empno=&number;
Enter value for number: 7934
old   1: select ename,sal from emp where empno=&number
new   1: select ename,sal from emp where empno=7934

ENAME          SAL
---------- ----------
MILLER         1300

② 、&&符号替换

     
倘使在三番五次查询中用到同样替换变量,且该替换变量的值不变,可用&&替换。当oracle服务器碰着&&替换变量时,用经过会提示输入1个值,该值即为该变量的对话值,当后续查询引用该替换变量时,会直接沟通为该变量会话值,用户进度不再晋升输入值。

      如下所示:

SQL> select ename,sal from emp where empno=&&number;   -->> 注意,&&符号替换,第一次出现,会提示输入值
Enter value for number: 7934                           -->> 输入值
old   1: select ename,sal from emp where empno=&&number
new   1: select ename,sal from emp where empno=7934

ENAME          SAL
---------- ----------
MILLER         1300

SQL> select ename,sal from emp where empno=&number;   -->> 直接引用,不再提示输入新值
old   1: select ename,sal from emp where empno=&number
new   1: select ename,sal from emp where empno=7934

ENAME          SAL
---------- ----------
MILLER         1300

SQL> select ename,sal from emp where empno=&&number;   -->> 第二次出现,同样不再提示输入值,number在整个会话期间始终有效
old   1: select ename,sal from emp where empno=&&number
new   1: select ename,sal from emp where empno=7934

ENAME          SAL
---------- ----------
MILLER         1300

三 、替换列名

     
上述代表变量替代的基本上是where子句中的成分,但实在SQL语句中的任何因素都以足以替换的靶子。如下所示,第二列被轮换:

SQL> select empno,ename,&&col from emp order by &col;  -->> 第三列即为替换变量
Enter value for col: sal                               -->> 在这里,我们既可以选sal,也可以选择hiredate
old   1: select empno,ename,&&col from emp order by &col
new   1: select empno,ename,sal from emp order by sal

EMPNO ENAME        SAL
----- ---------- ----------
 7369 SMITH        800
 7900 JAMES        950
 7876 ADAMS           1100
 7521 WARD           1250
 ...

④ 、 替换表达式和文件

     
在运营时差不多能够轮换SQL语句的其它因素。条件是Oracle须求至少第四个单词是静态的。在SELECT语句中,至少必要SELECT关键字不变,如下所示:

SQL> select &rest_of_statements;
Enter value for rest_of_statements: ename from emp where empno=7839
old   1: select &rest_of_statements
new   1: select ename from emp where empno=7839

ENAME
----------
KING

五、 DEFINE

     
 当相同变量在讲话中反复面世时,能够运用&&替换成幸免再一次输入。当出现&&替换时,变量被保留为会话变量。随着语句的拓展,会选用保留的对话变量自动分析全数继续出现的该变量。那不一定是用户须求的,此时,可以应用UNDEFINEvariable来撤除,如上文中的UNDEFINE col,UNDEFINE number。

     
 DEFINE命令有四个目标:它可用来查找SQL会话中当前定义的享有变量列表;还可用来显式定义会话时期在八个要么三个语句中作为替换变量引用的变量的值。语法分别如下所示:

       DEFINE;

       DEFINE variable=value;

       替换变量使用的前缀平日是 & 恐怕&&。这是标识替换变量的暗中同意字符。在SQL*PLus中,使用1个新鲜的SET命令选项,就足以把私下认可的字符(&)修改为其余字符,恐怕剥夺替换变量天性。SET命令的语法如下:

       SET DEFINE character;  

       SET DEFINE ON;

       SET DEFINE OFF;

       
第3个SET命令选项会把替换变量的前缀从&修改为别的字符。这些字符不能够为数字照旧空白字符。第一个指令选项和第⑧个指令选项控制SQL*Plus是还是不是会招来替换变量。除了那些之外,ON选项会把替换字符重修修改为&。

六、 VERIFY命令

     
 操作Oracle服务器时能够运用两类命令:SQL语言命令和SQL客户控制命令。SELECT语句是语言命令,而SET命令控制SQL客户环境。有那些差别的言语和决定命令可用,但与替换有关的决定命令是DEFINE和VE瑞虎IFY。

     
 VE奥迪Q7IFY命令控制提交的替换变量是或不是出示到显示器上,以便验证替换是或不是正确。呈现的音讯由旧子句和富含替换变量的输入值的新子句组成。如下所示:

SQL> select ename,sal from emp where empno=&number;
Enter value for number: 7788
old   1: select ename,sal from emp where empno=&number
new   1: select ename,sal from emp where empno=7788

ENAME          SAL
---------- ----------
SCOTT         3000

SQL> set verify off
SQL> select ename,sal from emp where empno=&number;
Enter value for number: 7788

ENAME          SAL
---------- ----------
SCOTT         3000

 

相关文章