首页 > 代码库 > 动态sql
动态sql
--动态SQL的几种用法
但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态SQl,如:
当 from 后的表 不确定时,或者where 后的条件不确定时,都需要用到动态SQL
1、动态游标
TYPE 游标类型 IS REF CURSOR; --定义一个动态游标
游标名 游标类型;
DECLARE
TYPE emp_cur IS REF CURSOR;
my_emp_cur emp_cur;
my_emp_rec findsdata.test_emp%ROWTYPE;
BEGIN
OPEN my_emp_cur FOR ‘select * from findsdata.test_emp where deptno=:x‘
USING 30;
LOOP
FETCH my_emp_cur
INTO my_emp_rec;
EXIT WHEN my_emp_cur%NOTFOUND;
dbms_output.put_line(my_emp_rec.ename || ‘|‘ || my_emp_rec.sal);
END LOOP;
END;
2.execute immediate 动态绑定
declare
v_out varchar2(10);
v_sql varchar2(1000);
begin
v_sql := ‘select union_source from findsdata.c_init_union_source where init_user=:init_user and init_table=:init_table‘;
execute immediate v_sql
into v_out
using &init_user,&init_table;
dbms_output.put_line(v_out);
end;
动态sql