请教:
  最近跟别的系统做接口.
  对方在他们的数据库上开发了一个返回游标的存储过程.
   并给我们分配了用户访问. 
  单独访问可以调用.  我想把他们的访问过程封装到我们的存储过程中.(建立dblink访问)
  封装的程序可以执行, 但无法获取游标和数据.代码如下:  
create or replace package PAK_CURSOR_TEST is  -- Author  : ADMINISTRATOR
  -- Created : 2008-6-25 15:35:16
  -- Purpose : 
  
  -- Public type declarations
  type refcurosr is ref cursor;
  
  procedure PR_TEST_CURSOR(P_INDATE VARCHAR2,  rc_zhaozhenlong out refcurosr);
end PAK_CURSOR_TEST;
create or replace package body PAK_CURSOR_TEST is
  PROCEDURE PR_TEST_CURSOR (P_INDATE VARCHAR2,  rc_zhaozhenlong out refcurosr) is
   myresult varchar2(300);
  begin        pkg_query.pro_call_record@dblink             (   '13300000000','20080501000000','20080510235959',myresult,rc_zhaozhenlong);
  end;
end PAK_CURSOR_TEST;调用代码: 
create or replace procedure p_testopenrmcursor is
type type_cur is ref cursor;
cur_out type_cur;CITY_NAME    varchar2(50);
   ROAM_TYP  varchar2(50);
   CALL_TYP  varchar2(50);
   OPPOSE_NUMBER     varchar2(50);
   CALL_TIME  varchar2(50);
   CALL_DURATION    varchar2(50); 
   BASE_FEE      number(10,2);
   LAND          varchar2(50);
begin
  
  GDJF.PAK_CURSOR_TEST.PR_TEST_CURSOR('GZ',cur_out);
 -- open cur_out;
        Loop
            Fetch cur_out
                Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND;
            Exit When cur_out%Notfound;
            dbms_output.put_line('a:'||CITY_NAME);
        end loop;
       
        
end p_testopenrmcursor;执行过程
SQL> exec p_testopenrmcursor;begin p_testopenrmcursor; end;ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at "GDJF.P_TESTOPENRMCURSOR", line 18
   封装的目的是为了让web前台只调用一个数据库的内容.
   但封装过程可以执行, 却不能获取到游标再获取数据.   查看了网上的其他资料, 也只是到了执行这一步, 没有获取游标数据. 
   
   请教各位有什么别的好办法么? 

解决方案 »

  1.   

        Loop 
                Fetch cur_out 
                    Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND; 
                Exit When cur_out%Notfound; 
                dbms_output.put_line('a:' ¦ ¦CITY_NAME); 
        end loop; 这里调了,大锅
      

  2.   

    ORA-06512: at "GDJF.P_TESTOPENRMCURSOR", line 18 是什么?
      

  3.   

    你的意思是说:
              Fetch cur_out 
                    Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND; 从错误本身看, 就是变量和对方的数据类型不匹配的原因么? 应该不是, 我核对过对方的数据的.
      

  4.   

    不能那样简单调用的
    http://blog.csdn.net/CathySun118/archive/2008/06/15/2550196.aspx