开发中有时候需要在程序里直接调用过程进行处理,并获得返回值,这时候可以通过游标返回。
定义返回游标包:
CREATE OR REPLACE PACKAGE HIGHSOFT_TYPES is
type dsCursor is REF CURSOR;
end Highsoft_Types;
游标定义时引用包:
O_CURSOR OUT HIGHSOFT_TYPES.dsCursor
过程最后用游标返回结果:
OPEN O_CURSOR FOR
CREATE OR REPLACE PROCEDURE YK_P_BIG_YK_AVG_TIME
(IN_BEG_DATE DATE,IN_END_DATE DATE,
IN_USER_FLAG CHAR,
O_CURSOR OUT HIGHSOFT_TYPES.dsCursor) IS
/*各阶段工单平均用时情况
*in_beg_date 开始日期
*in_end_date 结束日期
*in_flag 3高压单 ;4高压双
*/
V_RESULT INTEGER;
V_BUSI_CODE VARCHAR2(48);
V_BUSI_NAME VARCHAR2(48);
--V_PROMISE1 NUMBER(5);
--V_PROMISE2 NUMBER(5);
--V_PROMISE3 NUMBER(5);
--V_PROMISE4 NUMBER(5);
BEGIN
V_RESULT := -1;
--V_PROMISE1 := 1+5+3+3+3; --居民
--V_PROMISE2 := 2+5+3+3+5; --低压非居民
--V_PROMISE3 := 5+15+5+5+7; --高压单电源
--V_PROMISE4 := 7+15+5+5+7; --高压双电源
--取供电局代码
SELECT A.BUSINESS_PLACE_CODE, A.BUSINESS_PLACE_NAME
INTO V_BUSI_CODE, V_BUSI_NAME
FROM BUSINESS_PLACE_INFO A
WHERE A.F_BUSINESS_PLACE_CODE