在Oracle中通过db链接访问游标

时间:2012-12-11 14:47:34

标签: oracle cursor dblink

我必须编写一个存储过程,通过db链接调用远程过程。此过程返回一个游标。当我尝试迭代这个游标时,我得到ORA-01001:无效的游标错误。我在一些论坛上看到,简单地说它不允许通过数据库链接访问游标,但我不相信这一点。有谁知道如何解决它?重要的是我无法修改现有的远程方法。

下面是我的程序代码:

declare
  TYPE generic_cursor IS REF CURSOR;
  refCursorValue generic_cursor;  
 field1 table1.column1@my_db_link%type;
begin

  rempote_package.remote_method@my_db_link('33337136','','',refCursorValue);

 loop
      fetch refCursorValue into  field1;      -- here exception is thrown               
      exit when refCursorValue%NOTFOUND;
  end loop;
  close refCursorValue;
end;

远程方法的界面如下:

PROCEDURE remoteMethod (p1 IN VARCHAR2,
 p2 IN VARCHAR2,
 p3 IN VARCHAR2,
 rst_data OUT pkg_resultset.generic_cursor)

和pkg_resultset.generic_cursor有以下定义:

 TYPE generic_cursor IS REF CURSOR;

1 个答案:

答案 0 :(得分:3)

尽我所知,你不能在数据库链接上传递引用光标。但你可以通过一张桌子。请参阅Ask Tom的这个例子:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4254116170549