绑定变量(bind variables)、替换变量(substitution variables)

来源:互联网 发布:淘宝后台手机端 编辑:程序博客网 时间:2024/05/17 05:07

1、替换变量(主要用来 sql、plsql与用户的交互,可以运行时输入、也可提前输入)

      注意:只替换变量,如果是字符,请放在单引号内,如‘&1’;

      a 、使用环境

            sql语句中:如 select * from site where site_no='&1';

            pl/sql块中使用,如:

            DECLARE
            v_begin_time DATE := to_date('&1', 'yyyymmdd');
            v_end_time   DATE := to_date('&2' || ' 23:59:59', 'yyyymmdd hh24:mi:ss');
           BEGIN

           。。。。。。

           END;

     b 、两种使用:

            一种是位置参数&1,&2,对应sqlplus输入时的参数位置;

            一种是和一般的变量一样,任何名字都行。&a

     c、声明方式:

          accept  v_name number promt 请输入:         ----是变量,数据类型自己控制

           define v_name duqiang;      ----是变字符串行常量

 2、绑定变量(为占位符,只要用在动态sql、游标、游标变量、sqlplus环境中变量与plsql之间的交互)

     a 、动态sql(且以外面引用的变量的数据类型传到sql中去)

          execute immediate ‘update site set site_name = :a where site_id= :b returning site_name into :c’

            using  v_a ,v_b, out v_c;

     b、游标变量

          open cursor for  ‘select site_id from site where site_id = :a and create_date = :b’ ;

           fetch cursor into v_site_id;

     c、sqlplus环境中变量与plsql之间的交互

          (一种特殊情况吧,块中不是动态sql的话,变量前面:即使用sqlplus环境变量)

         sql> variable  v_a number;

         在sqlplus环境中的变量如果要在块中可见(赋值、读取),只要在变量前面加 :v_a 就好了。

        sql> begin  select id  into :i : from  site end;

    d、绑定变量声明在sqlplus ,赋值在plsql ,返回给sqlplus

          sql> variable  a number

原创粉丝点击