データベース リンクを介してリモート プロシージャを呼び出すストアド プロシージャを作成する必要があります。このプロシージャはカーソルを返します。このカーソルを反復しようとすると、ORA-01001: 無効なカーソル エラーが発生します。いくつかのフォーラムで、db リンクを介してカーソルにアクセスすることは単に許可されていないことを読みましたが、それについては確信が持てません。誰でもそれを解決する方法を知っていますか? ここで重要なのは、既存のリモート メソッドを変更できないことです。
以下は私の手順のコードです:
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;