Oracle轮换变量&和&&

轮换变量可看成是占用位符

同样、 单个&符号替换

     
 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服务器遇到&&替换变量时,用经过会唤起输入一个价值,该值即为该变量的对话值,当后续查询引用该替换变量时,会直接调换为该变量会讲话值,用户进程不再提拔输入值。

      如下所示:

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

     
 当相同变量在言语中数冒出常常,可以利用&&替换来避免重新输入。当起&&替换时,变量被封存也会说话变量。随着语句的拓,会以保留之对话变量自动分析所有继续出现的该变量。这不肯定是用户需要的,此时,可以使UNDEFINE
variable来清除,如达到文中的UNDEFINE col,UNDEFINE number。

     
 DEFINE命令有一定量独目的:它可用来搜寻SQL会讲话中即定义的有所变量列表;还可用来显式定义会话期间在一个要么基本上个报告句被当替换变量引用的变量的价值。语法分别如下所示:

       DEFINE;

       DEFINE variable=value;

       替换变量使用的前缀通常是 & 或者
&&。这是标识替换变量的默认字符。在SQL*PLus中,使用一个奇的SET命令选项,就好将默认的字符(&)修改也其他字符,或者剥夺替换变量特性。SET命令的语法如下:

       SET DEFINE character;  

       SET DEFINE ON;

       SET DEFINE OFF;

       
第一独SET命令选项会管替换变量的前缀从&修改也其他字符。这个字符不能够吧数字还是空白字符。第二只命选项和老三独令选项控制SQL*Plus是否会见找替换变量。除此之外,ON选项会将替换字符重修修改为&。

六、 VERIFY命令

     
 操作Oracle服务器时可以使简单好像命令:SQL语言命令和SQL客户控制命令。SELECT语句是言语命令,而SET命令控制SQL客户环境。有许多两样之语言及操纵命令可用,但跟替换有关的决定命令是DEFINE和VERIFY。

     
 VERIFY命令控制提交的更迭变量是否出示到屏幕及,以便验证替换是否正确。显示的信息由旧子句和含有替换变量的输入值的新子句组成。如下所示:

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

 

相关文章