替代变量-----from cyber

--&变量名,&&变量名简析-----------------------------------------------------------
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;
复制代码
posted @ 2015-12-18 17:13  MorePrograms  阅读(315)  评论(0编辑  收藏  举报