3

クエリの実行に失敗し、戻りカーソルが失敗状態になったときに、データベース呼び出しからSQLクエリが返されるようにしようとしています。このクエリ文字列は、ログ記録の目的で使用されます。

これを行う1つの方法は、SQLクエリを文字列として含む変数を保持し、PL / SQLブロック内の各クエリを例外ハンドラでラップし、例外が発生した場合は、失敗ステータスのクエリ文字列をに返すことです。 UIコンポーネント。

これを行うためのより良い方法はありますか?Oracle例外オブジェクトまたはその他のパッケージはこの機能をサポートしていますか?

この質問はスレッドの重複のようです:SQLExceptionの原因となったQuery/CommandTextを取得します

ただし、そのスレッドで問題の解決策が見つかりませんでした。例外が発生する原因となったクエリ文字列を提供するOracleでサポートされている新しいパッケージがあるかどうかを知りたいです。

4

1 に答える 1

1

外部言語 (Java、C#) からデータベースを呼び出す場合、独自の JDBC (またはその他の) ドライバーを実装することで、おそらくそれを行うことができます。

現実世界を通常のドライバーに委譲することでそうしますが、ステートメントがデータベースに送信されるたびにステートメントを記憶し、例外が発生した場合は、SQL ステートメント (およびおそらくバインド変数) も含む新しい例外を作成します。

これはあなたの声明だけを与えることに注意してください。ストアド プロシージャを実行するか、トリガーを起動して失敗すると、実際に失敗したステートメントではなく、元のステートメントのみが取得されます。

于 2012-05-04T05:15:38.977 に答える