--&变量名,&&变量名简析-----------------------------------------------------------
1 set verify on;
2 select * from tcpn_jodsmapping where productid = '&ProductID' and producteffdate = '&ProductEffdate' 3 ORDER by '&ProductID'; 4 select * from tcpn_jodsmapping where productid = '&&ProductID' and producteffdate = '&ProductEffdate' 5 ORDER by '&ProductID';
& :“&变量名” --------- eg:&name;
生命周期:单次引用中,不需要声明,如果替换字符或日期类型,最好用单引号扩起
使用范围:where、order by、列表达式、表名、整个SELECT 语句中
&& :“&&变量名”-------eg:&&name;
生命周期:整个会话(session连接),不需要声明
-- ACCEPT-----------------------------------------------------------------------
1 ACCEPT pro_pID PROMPT 'Provide the Product ID and Eff date.'
2 select * from 3 tcpn_jodsmapping 4 where productid = '&pro_pID';
accept
生命周期:整个会话
预先声明,可以客户化提示信息,使用时用&引用声明的变量。
定义:
accept 变量名name number/char/date prompt '提示信息内容'即:ACC[EPT] variable [NUM[BER] | CHAR | DATE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]
解释:
PROMPT命令:用于输出提示用户的信息,以便使用户了解脚本文件的功能和运行情况
PAUSE命令:用于暂停脚本文件的运行
HIDE选项:用于隐藏用户的输入,使别人不可见,安全
这 条命令的意思是:当plsql程序段执行到变量name的时候,此时需要用户的交互才能继续执行下去,plsql程序段会显示“提示信息内 容”让用户输入相关信息(如果指定hide选项,那么在接下去用户输入的东西将被用星号显示出来增加安全,有点像输入密码),用户输入的内容被接收到并且 把它付给name,关于在“提示信息内容”下用户输入的内容的类型,plsql程序段开发人员来通过number/char/date指定,变量name 得到正确的值以后,继续执行相关下面的程序!
--DEFINE-----------------------------------------------------------------------
1 DEFINE DEF010003=010003;
2 DEFINE DEF010003 3 DEFINE DEF01000320090301=20090301; 4 DEFINE DEF01000320090301 5 SELECT * FROM tcpn_paymentitem 6 where productid = '&DEF010003' 7 and PRODUCTEFFDATE = '&DEF01000320090301'; 8 UNDEFINE DEF010003; 9 UNDEFINE DEF01000320090301;
define :“define 变量名=变量值”eg:DEFINE a = clark;
生命周期:整个会话,预先声明,使用时用&引用声明的变量
define variable=用户创建的CHAR类型的值:define 变量名=值;
define 变量名:查看变量命令。
undefine 变量名:清除变量
define:查看在当前会话中所有的替换变量和它们的值
--------------------------------------------------------------------------------
使用范例:
1 declare
2 v_sal number(6,2); 3 v_ename emp.ename%type:='&ename'; 4 begin 5 select sal into v_sal from emp 6 where lower(ename)=lower(v_ename); 7 if v_sal<2000 then 8 update emp set sal=v_sal + 200 9 where lower(ename)=lower(v_ename); 10 end if; 11 end;