数据库

 首页 > 数据库 > Oracle > Oracle中的替换变量,&变量名,&&变量名简析

Oracle中的替换变量,&变量名,&&变量名简析

分享到:
【字体:
导读:
         摘要:替换变量(仅用于SQL*Plus或者用于原理和SQL*Plus相同的开发工具):临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在SQL*Plus中又称交互式命令替换变量的格式式在变量名称前加... SyntaxHighlighter.all(); ...

Oracle中的替换变量,&变量名,&&变量名简析

替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具):
临时存储值
利用它可以达到创建通用脚本的目的
利用它可以达到和用户交互,故在SQL *Plus中又称交互式命令
 
替换变量的格式式在变量名称前加一个&,以便在运行SQL命令时提示用户输入替换数据,然后按输入数据运行SQL命令
语法:
(1)& :“&变量名”eg:&name;
生命周期:单次引用中,不需要声明,如果替换字符或日期类型,最好用单引号扩起
使用范围:where、order by、列表达式、表名、整个SELECT 语句中
  www.2cto.com  
(2)&& :“&&变量名”eg:&&name;
生命周期:整个会话(session连接),不需要声明
 
(3)define :“define 变量名=变量值”eg:DEFINE a = clark;
生命周期:整个会话,预先声明,使用时用&引用声明的变量
define variable=用户创建的CHAR类型的值:define 变量名=值;
define 变量名:查看变量命令。 
undefine 变量名:清除变量
define:查看在当前会话中所有的替换变量和它们的值
 
(4)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得到正确的值以后,继续执行相关下面的程序!
例:accept a char prompt '请输入员工的雇佣时间(yyyy-mm-dd):' hide 
例:accept a char prompt 'input a:' hide
  www.2cto.com  
verify:是否给出原值及新值提示。
 
set verify on/off;
 
具体请参看下面的例子:
plsql程序1:
[sql]
declare  
   v_sal number(6,2);  
   v_ename emp.ename%type:='&ename';  
begin  
   select sal into v_sal from emp  
where lower(ename)=lower(v_ename);  
if v_sal<2000 then  
   update emp set sal=v_sal + 200  
      where lower(ename)=lower(v_ename);  
end if;  
end;  
  
/  
plsql程序2:
[sql]
declare  
   v_sal number(6,2);  
   v_ename emp.ename%type:='&&ename';  
begin  
   select sal into v_sal from emp  
where lower(ename)=lower(v_ename);  
if v_sal<2000 then  
   update emp set sal=v_sal + 200  
      where lower(ename)=lower(v_ename);  
end if;    www.2cto.com  
end;  
  
/  
secureCRT的一个会话中先执行程序2,再次执行程序1,会发现直接PL/SQL procedure successfully completed.
 而不让我输入ename,将set verify off也不行
 另一个打开会话 将set verify off后,每次执行程序1都会让你输入ename。
这就是在前面一个会话执行程序2的时候已经将ename,保存为了会话的变量,而不是plsql程序的变量。
 
 
 
作者 luolunz
Oracle中的替换变量,&变量名,&&变量名简析
分享到:
Oracle中的自动增长字段简析
Oracle中的自动增长字段简析 环境:PLSQL Developer 7.1.5 Oracle 11.2.0   Oracle 中不像MYSQL和MS SQLServer中那样指定一个列为自动增长列的方式,不过在Oracle 中可以通过SEQUENCE序列来实现自动增长字段。在Oracle 中SEQUENCE被称为序列,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 在使用SEQUENC...
Oracle如何根据动态性能视图来查看某条SQ...
Oracle如何根据动态性能视图来查看某条SQL语句的执行计划 1、授权某用户查看 sys.v$sql_plan 的权限   2、创建类plan_table的视图         SQL> create or replace view dynamic_plan_table   2  as   3  select rawtohex(address)|| &#039;_&#039; ||child_number statement_id,   4  sysdate timestamp,oper...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……