1

データベース リンクを介してリモート プロシージャを呼び出すストアド プロシージャを作成する必要があります。このプロシージャはカーソルを返します。このカーソルを反復しようとすると、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;
4

1 に答える 1

3

私が知る限り、データベース リンクに ref カーソルを渡すことはできません。しかし、あなたはテーブルを渡すことができます。Ask Tom の例を参照してください: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4254116170549

于 2013-01-09T22:16:38.490 に答える