服务器 频道

SQL*PLUS命令的使用大全(下)

  38. 定义一个绑定变量

  VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]

  定义一个绑定变量,该变量可以在pl/sql中引用。

  可以用print命令显示该绑定变量的信息。

  如:

  column inst_num  heading "Inst Num"  new_value inst_num  format 99999;

  column inst_name heading "Instance"  new_value inst_name format a12;

  column db_name   heading "DB Name"   new_value db_name   format a12;

  column dbid      heading "DB Id"     new_value dbid      format 9999999999 just c;

  prompt

  prompt Current Instance

  prompt ~~~~~~~~~~~~~~~~

  select d.dbid            dbid

  , d.name            db_name

  , i.instance_number inst_num

  , i.instance_name   inst_name

   from v$database d,

   v$instance i;

  variable dbid       number;

  variable inst_num   number;

  begin

   :dbid      :=  &dbid;

   :inst_num  :=  &inst_num;

  end;

  /

  说明:

  在sql*plus中,该绑定变量可以作为一个存储过程的参数,也可以在匿名PL/SQL块中直接引用。为了显示用VARIABLE命令创建的绑定变量的值,可以用print命令

  注意:

  绑定变量不同于变量:

  1.        定义方法不同

  2.        引用方法不同

  绑定变量::variable_name

  变量:&variable_name or &&variable_name

  3.在sql*plus中,可以定义同名的绑定变量与用户变量,但是引用的方法不同。

  39. &与&&的区别

  &用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。

  &&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。

  如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:

  select count(*) from emp where deptno = &deptnoval;

  select count(*) from emp where deptno = &deptnoval;

  select count(*) from emp where deptno = &deptnoval;

  将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:

  select count(*) from emp where deptno = &&deptnoval;

  select count(*) from emp where deptno = &&deptnoval;

  select count(*) from emp where deptno = &&deptnoval;

0
相关文章