请教:根据条件动态执行有游标的存储过程,但是执行过程莫名吊死!

sandygood 2006-09-24 08:38:05
请教:根据条件动态执行有游标的存储过程,但是执行过程种吊死!
调用存储过程
CREATE OR REPLACE PROCEDURE cp_test_procedure(o_vErrMsg OUT VARCHAR2) IS
t_vSQL VARCHAR2(1000);
t_cursor pg_HMBSTCur.CurTyp;
t_vlocalsite VARCHAR2(60);
BEGIN
t_vSQL := 'begin
cp_test_cursor(: o_cursor);
end; ';

EXECUTE IMMEDIATE t_vSQL
USING OUT t_cursor;
LOOP
FETCH t_cursor
INTO t_vlocalsite;
EXIT WHEN t_cursor%NOTFOUND;
dbms_output.put_line(t_vlocalsite);
END LOOP;
CLOSE t_cursor;

EXCEPTION
WHEN OTHERS THEN
o_vErrMsg := SQLERRM;
NULL;
END ;
获取游标存储过程
CREATE OR REPLACE PROCEDURE cp_test_cursor(o_cursor OUT pg_HMBSTCur.CurTyp) IS
BEGIN

OPEN o_cursor FOR
SELECT postfix FROM t_sys_addrpostfix;
NULL;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END;
游标包
create or replace package pg_HMBSTCUR
as
TYPE CurTyp is ref cursor;
inval_cur_num EXCEPTION;
pragma exception_init(inval_cur_num,-1023);
end pg_HMBSTCUR;
表:
create table T_SYS_ADDRPOSTFIX
(
POSTFIX VARCHAR2(255) not null,
PRIORITY NUMBER(2),
UNDERCORP VARCHAR2(12) not null
);

在执行 cp_test_procedure 的时候,就会死掉,也没有死锁,奇怪!请大家探讨一下:是不是不能执行带有游标的存储过程??

...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandygood 2006-10-14
  • 打赏
  • 举报
回复
不行的,因为要执行什么存储过程,我事先是不知道的,是配置的,所以才会有这样的需求。所以,看来9i是别指望了。
wiler 2006-10-14
  • 打赏
  • 举报
回复
t_vSQL := 'begin
cp_test_cursor(: o_cursor);
end; ';

EXECUTE IMMEDIATE t_vSQL
USING OUT t_cursor;

这里改成这样不行吗?修改如下:
cp_test_cursor(t_cursor);
sandygood 2006-10-14
  • 打赏
  • 举报
回复
看来这里找不到结果
real_name 2006-09-28
  • 打赏
  • 举报
回复
有意思
doer_ljy 2006-09-28
  • 打赏
  • 举报
回复
学习
LVOLCANO 2006-09-28
  • 打赏
  • 举报
回复
mark
sandygood 2006-09-25
  • 打赏
  • 举报
回复
sandygood 2006-09-24
  • 打赏
  • 举报
回复
呵呵,是啊,有意思吧!就是不知道什么原因!
wiler 2006-09-24
  • 打赏
  • 举报
回复
经过测试,如果不用存储过程返回游标的话就不会死掉,
期待高手解决
wiler 2006-09-24
  • 打赏
  • 举报
回复
gz

17,078

社区成员

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

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