0

Java アプリケーションがあり、OJB を ORM テクノロジとして使用しています。開発対象の Oracle XE をローカルにインストールしています。問題は、問題をデバッグする必要があるときです。私は SQL 出力を見るのが好きです。以下は、Oracle XE の「Top SQL」インターフェースから表示できる SQL の例です。

 select a_bunch_of_fields
 from KREW_DOC_TYP_T A0
 WHERE ((UPPER(A0.DOC_TYP_NM) LIKE :1) AND A0.ACTV_IND = :2) AND A0.CUR_IND = :3 

問題は、「:1」ではなく実際の値を表示したいということです。これを構成する方法が見つからないようです。ほとんどの場合、アプリケーションは期待どおりに応答しているため、実際の値が機能していることはわかっています (したがって、私が取り組んでいるバグです)。

ありがとう、ジェイ

4

1 に答える 1

0

手っ取り早い方法の 1 つは、提供されているデータベース ビュー (v$sql_bind_capture および v$sqlarea) を調べることです。以下の SQL では、上記の SQL ステートメントと一致するように like 句を追加しました。各バインド変数とその値の行を取得します。非常に具体的な SQL ステートメントをターゲットにするには、クエリの sql_id が必要です。

SELECT a.sql_text, b.NAME, b.POSITION, b.datatype_string, b.value_string
  FROM v$sql_bind_capture b, v$sqlarea b
 WHERE b.sql_id = a.sql_id
  and a.sql_text like '%UPPER(A0.DOC_TYP_NM) LIKE :1%'

出力 (SQL がないと、結果は次のようになります):

"NAME","POSITION","DATATYPE_STRING","VALUE_STRING"
":B1","2","NUMBER","1001"
于 2009-11-24T16:53:05.980 に答える