Oracle存储过程多个SYS_REFCURSOR游标数据集怎么整合在一个SYS_REFCURSOR游标数据集里面
__晴天 2014-06-27 10:06:36 CREATE OR REPLACE PROCEDURE PCX_FFCK_XZQTJ (o_code OUT NUMBER,
o_note OUT VARCHAR2,
o_result OUT SYS_REFCURSOR,
i_kssj IN NUMBER,
i_jssj IN NUMBER,
i_is_record IN NUMBER,
i_userxzqjb IN NUMBER,
i_userxzqdm IN NUMBER)
AS
vsql VARCHAR2 (4000);
vsqlwhere VARCHAR2 (2000);
v_code NUMBER (1);
v_note VARCHAR2 (500);
v_xzqColRoot VARCHAR2 (20); /*本级行政区节点*/
v_xzqColChild VARCHAR2 (20); /*下级行政区节点*/
v_xzqjbChild VARCHAR2 (20); /*下级行政区级别*/
v_result_FFCKD SYS_REFCURSOR;
v_result_XCRZ SYS_REFCURSOR;
BEGIN
IF i_userxzqdm IS NULL OR i_userxzqjb IS NULL OR i_is_record IS NULL
THEN
o_code := -1;
IF i_userxzqdm IS NULL
THEN
o_note := '行政区代码不能为空';
END IF;
IF i_userxzqjb IS NULL
THEN
o_note := '行政区级别不能为空';
END IF;
IF i_is_record IS NULL
THEN
o_note := '是否记录不能为空';
END IF;
ELSE
PCX_FFCK_XZQTJ_FFCKD (v_code,v_note,v_result_FFCKD,i_kssj,i_jssj,i_is_record,i_userxzqjb,i_userxzqdm);
PCX_FFCK_XZQTJ_XCRZ (v_code,v_note,v_result_XCRZ,i_kssj,i_jssj,i_is_record,i_userxzqjb,i_userxzqdm);
/*这里需要将v_result_FFCKD和v_result_XCRZ数据一起整合到o_result ,v_result_FFCKD和v_result_XCRZ的结果集结构是一样的*/
IF v_code>0
THEN
-- vsql := 'select count(1) from p_table';
--OPEN o_result FOR vsql;
o_code := 1;
ELSE
o_code := -1;
o_note := v_note;
END IF;
END IF;
--异常返回
EXCEPTION
WHEN OTHERS
THEN
o_code := -1;
o_note := '过程PCX_FFCK_XZQTJ出错:' || SQLERRM;
END;