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;
...全文
679 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主后面怎么处理的呢 ?我也遇到了这个问题
__晴天 2014-06-27
  • 打赏
  • 举报
回复
当前用户没有创建临时表的权限,所以麻烦。在没有权限创建临时表的情况下有什么好方法呢?
xu176032 2014-06-27
  • 打赏
  • 举报
回复
建个临时表,把数据存进去,然后再查一下
__晴天 2014-06-27
  • 打赏
  • 举报
回复
多谢大家了。 嗯,我目前是放到自定义类型里面了,但是怎么从自定义类型放到o_result输出呢?
  • 打赏
  • 举报
回复
难道放到自定义类型里面?is table of
xu176032 2014-06-27
  • 打赏
  • 举报
回复
没碰到过这种情况,给你个建议,你可以考虑把生成两个游标的sql返回,然后union all这两个游标的sql用来生成新的游标

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧