pl sql 学习笔记(六)再学动态sql

来源:互联网 发布:淘宝上组装电脑 编辑:程序博客网 时间:2024/06/05 02:55

1、  动态SQL和动态pl/SQL:

Execute immediate SQL_string

[into  define_variable]—结构放到某一变量或者record中;

[using  ]

如:

Begin

Execute immediate  ‘sql 语句’ –这里必须用引号包围。

         End;

 

用过程包装:

   Create or replace procedure name(string in varchar2(100))

   Is

  begin

     Execute immediate string

   End;

 这样这个过程就可以执行任何的SQL语句了。

 

2、  Using用法:

一般是:   Execute immediate ‘update  ‘||table ||’ set salary= 10000 where employee_id =1506 ’;

 

增加using后:Execute immediate‘update  ‘||table ||’ set salary :=salary where employee_id := employee_id ’ using 10000,1506 ;

 

3、  into :

Execute immediate ‘select a, b from table where c:=c ’ into l_a,l_busing 10;

 

4、  汇总一点:

 Create or replace procedure name(name_in in varchar2(20))

   Is

   Sql_stringvarchar2(100);

   Salary number;  

   Begin

     Sql_string:=’select * from employee where name :=use_name

returning salary into :newsal’; --这里不用声明。

     Execute immediate sql_string  --这样就会将sql_string 与using 分开写;

       Using name_in ,out salary   --返回out salary

   End;

注意的是 using null 是错误的,如果一定要传入null 只能通过申明没有赋初始值的变量如:

Salary number;

Execute immediate =’select * from employee where Salary := Salary’

Using number; ---这里number没有赋初值,所以是null。 但是不能直接用using null;

 

 

 

 

0 0
原创粉丝点击