我必须编写一个存储过程,通过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;
答案 0 :(得分:3)
尽我所知,你不能在数据库链接上传递引用光标。但你可以通过一张桌子。请参阅Ask Tom的这个例子:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4254116170549