ORACLE9i动态SQL调用方法心得_oracle动态sql的总结
ORACLE9i动态SQL调用方法心得由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle动态sql的总结”。
ORACLE9i动态SQL调用方法心得
一、执行动态函数--返回值
OUT_CS:=0;--参数
IN_CS1:=100;
IN_CS2:=150;--自定义函数名称FUN_01();
NAME:='01'
V_SQL := 'BEGIN :1:=FUN_'||NAME||'(:2);END;';
BEGIN
EXECUTE IMMEDIATE V_SQL
USING OUT OUT_CS, IN IN_CS;
EXCEPTION
WHEN OTHERS THEN
OUT_JG := '执行异常!';
END;
FUNCTION GET_DMGZ(IN_CS IN NUMBER)RETURN NUMBER AS AS BEGIN
RETURN IN_CS+1;END;
二、执行动态过程--输出参数
OUT_CS:=0;--输入参数
IN_CS:=100;--自定义函数名称PRO_01();
NAME:='01'
V_SQL := 'BEGIN PRO_' || NAME|| '(:1,:2);END;';
BEGIN
EXECUTE IMMEDIATE V_SQL
USING IN IN_CS, OUT RVAR;
EXCEPTION
WHEN OTHERS THEN
OUT_JG := 0;
END;
PROCEDURE PRO_01(IN_CS
IN NUMBER, OUT_CS OUT NUMBER)AS BEGIN
OUT_CS:=IN_CS+1;END;
三、返回游标参数
1、在包里新建一类型 TYPE MY_CUR IS REF CURSOR;
2、在参数定义时使用自定义类型
OUT_CS OUT MY_CUR;--存储过程
RETURN MY_CUR;
--自定义函数
3、存储过程
PROCEDURE PRO_01(IN_CS
IN NUMBER, OUT_CS OUT MY_CUR)AS BEGIN
OPEN OUT_CS FOR SELECT IN_CS+1 FROM DUAL;END;
4、自定义函数
FUNCTION GET_DMGZ(IN_CS IN NUMBER)RETURN MY_CUR AS RC MY_CUR;AS BEGIN
OPEN RC FOR SELECT IN_CS+1 FROM DUAL;
RETURN RC;END;
3、如何使用返回游标参数
FETCH MY_CUR INTO OUT_CS;
四、注意事项
动态调用存储过程,返回游标类型时系统会出现错误,系统执行完函数或存储过程时会停止,不返回上级程序。