替代变量-----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;
复制代码

转载于:https://www.cnblogs.com/Jeffrey-xu/p/5057642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值