0

リモート クライアントで 1 つの Oracle XXg データベースを実行していますが、テスト用の環境を再現することはできません。現在、予期しない値を返すストアド プロシージャが 1 つあります (これは、0 になるはずの単なる整数ですが、他の数値を返しています)。

関数とプロシージャを編集できますが、デバッグできない大きな Java アプリケーションを使用せずに関数を呼び出すことはできません。実行後に確認できるように、戻り値をテキスト ファイルまたはデータベースのログに記録する方法はありますか?

そのような機能がない場合、問題の少ない回避策は何ですか?

4

1 に答える 1

1

値をログに記録するテーブルを作成するのはどうですか?

CREATE TABLE mylog (t TIMESTAMP DEFAULT SYSTIMESTAMP, retval NUMBER);

CREATE OR REPLACE PROCEDURE yourprocedure 
AS
  myval NUMBER;

  PROCEDURE logval (myval NUMBER) AS PRAGMA autonomous_transaction;
  BEGIN
    INSERT INTO mylog(retval) VALUES (myval);
    COMMIT;
  END logval;
BEGIN
  -- your normal code
  myval := 1; 
  -- log the result
  logval(myval);
END yourprocedure;
/

次に、テーブルから値を選択するだけmylogです...

于 2013-01-10T17:37:11.770 に答える