日期:2014-05-17  浏览次数:20953 次

如何调用远程的procedure并且返回游标
各位大侠,问题是这样的,就是经常遇到需要写procedure用到远程数据库中的数据,然后返回一个游标(查询结果),目前的做法是用DBLINK将远程的数据拉到本地数据库,然后在做处理,如果数据量非常大的话就感觉不行,我想是不是有办法将过程建在远程DB上,然后调用,将结果返回到本地,请各位大侠指点

------解决方案--------------------
如果你在远程数据库有权限,可以将procedure建立在远程库上,然后在本地调用该远程procedure,获取结果集。
------解决方案--------------------
也是可以的
存储过程建在远程数据库user_name用户下
create or replace procedure getRec(o out sys_refcursor) is
begin
open o for select * from your_table;
end;

如在sqlplus中调用远程数据库的存储过程
sql>var c refcursor;
sql>exec user_name.getRec@dblink_name(:c);
sql>print c;