デバッグできない SQL Serverからの出力パラメータを使用したOracleストアドプロシージャの呼び出し




plsql 引数 (2)

SQL Server 2008 R2にOracleリンクサーバーがあります。 Oracleストアドプロシージャを実行する必要があります(最初の出力パラメータと2番目のプロシージャの入力パラメータ)。

CREATE OR REPLACE PROCEDURE my1.spGetDate(CurrentDate OUT VARCHAR2)
IS
BEGIN
-- set output parameter, no select statements
END;

CREATE OR REPLACE PROCEDURE my1.spDeleteOldRecords(CurrentDate IN VARCHAR2)
IS
BEGIN
-- conditional delete from oracle table, no select statements
END;

この質問に関する完全な文書は見つかりませんでした。パラメーターのない選択/非選択プロシージャーを持つ単純な例だけで、これらのプロシージャーの呼び出し方法、内部を選択するプロシージャー、基本パラメーター・タイプを持つマルチパラメーター・プロシージャーを知りたいです。


Answer #1

それはこのように動作するはずです:

DECLARE @dateval DATETIME

EXECUTE ('begin my1.spGetDate(?); end;', @dateval OUTPUT) AT ORA_DBLINK_NAME;

EXECUTE ('begin my1.spDeleteOldRecords(?); end;', @dateval) AT ORA_DBLINK_NAME;

複数のパラメータがある場合は、次のようになります。

EXECUTE ('begin my1.spProc(?,?,?,?); end;', @param_in_1, @param_in_2, @param_out_3 OUTPUT, @param_out_4 OUTPUT) AT DBLINK_NAME;

Answer #2

REF CURSORを使用して、そのカーソルをOracleの出力変数として宣言します。 Ref Cursorを使用すると、Oracleストアドプロシージャから結果セットを取得できます。





linked-server