首页 新闻 会员 周边

net调用oracle的sp,使用系统游标返回记录集是总是报游标无法打开

0
悬赏园豆:100 [已关闭问题] 关闭于 2015-06-22 20:36

问题如题。

使用的sp如下:

CREATE OR REPLACE PROCEDURE CIA.onerowsonelabelTest (
  vSn in varchar2,
   out1    OUT   sys_refcursor,
   o_res   OUT   VARCHAR2
)
IS
   tb_count    INT;
   createsql   VARCHAR2 (1000)
      := 'CREATE GLOBAL TEMPORARY TABLE  CIA.TEMP_TABLE (templatename varchar2(2000) null,V1 varchar2(2000) null,V2 varchar2(2000) null) ON COMMIT  PRESERVE   ROWS  ';
BEGIN
   --先判斷全局臨時表是否存在,?存在則重新建立:
   SELECT COUNT (*)
     INTO tb_count
     FROM dba_tables
    WHERE table_name = 'TEMP_TABLE';

   IF tb_count = 0
   THEN
      EXECUTE IMMEDIATE 'grant create table to cia';

      EXECUTE IMMEDIATE createsql;
   END IF;
  
   EXECUTE IMMEDIATE 'delete CIA.TEMP_TABLE';
   EXECUTE IMMEDIATE 'insert into CIA.TEMP_TABLE values(:templatename,:V1,:V2)'
               USING 'c1.Lab', vSn, 'Test infor。。';


    open Out1 for SELECT * FROM CIA.TEMP_TABLE;
   
   o_res := 'OK';
EXCEPTION
   WHEN OTHERS
   THEN
      o_res := 'ERROR:' || o_res || ' ';
END onerowsonelabelTest;

以上的代码有调试均没有问题,但是在最近的调用中却出现异常,报错的信息就是,游标没有打开:

ORA-24338: 未執行敘述句處理
Void Print(System.String,

System.String, System.Collections.Generic.SortedList`2[System.String,System.String])

不知有能解决的没

Ref Tian的主页 Ref Tian | 初学一级 | 园豆:129
提问于:2012-03-27 14:18
< >
分享
所有回答(2)
0

把代码贴上来下看看

az235 | 园豆:8483 (大侠五级) | 2012-03-27 14:30
0

Oracle开发小集锦中提到这个问题的原因:

游标没有打开的情况一般是忘记了写打开游标的语句,也可能是存储过程中执行出错,导致最后游标未打开。
一般情况也会因为磁盘空间满了也会造成这样的提示。

dudu | 园豆:31043 (高人七级) | 2012-03-28 10:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册