动态SQL
1. 使用动态SQL可以在依赖对象不存在时创建子程序
2. 动态SQL主要利用execute immediate语句执行DML、DDL、DCL等语句操作
3. 如果使用了绑定变量,则必须在execute immediate中使用using字句设置所需要的绑定变量
4. 使用returning或return语句可以接收查询或更新后的返回结果
4. 使用批处理可以一次性将数据库之中取回的多个数据保存在集合里,或者使用forall将多个绑定参数设置到动态SQL之中
在游标中使用动态SQL
declare
cur_emp sys_refcursor; --游标变量
v_empRow emp%ROWTYPE;
v_deptno emp.deptno%TYPE := 10;
begin
open cur_emp for 'select * from emp where deptno - :dno'
using v_deptno;
loop
fetch cur_emp into v_empRow;
exit when cur_emp%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ('雇员姓名:'||v_empRow.name||',雇员职位:'||v_empRow.job);
end loop;
close cur_emp;
end;
/
利用FETCH保存多个数据到集合变量
declare
cur_emp sys_refcursor; --定义游标变量
type emp_index is table of emp%rowtype index by pls_intrger;