2009-11-24 12 views
0

J'ai une application Java et utilise OJB comme technologie ORM. J'ai une installation Oracle XE localement à développer contre. Le problème est lorsque j'ai besoin de déboguer un problème, j'aime regarder la sortie SQL. Voici un exemple de SQL que je peux voir à travers l'interface « Top SQL » dans Oracle XE:Problème d'affichage de débogage OJB/Oracle XE 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 

Le problème est que je voudrais voir la valeur réelle au lieu de « 1 ». Je n'arrive pas à trouver comment je peux configurer cela. Je sais que les vraies valeurs fonctionnent, parce que l'application répond comme prévu, pour la plupart (d'où les bugs sur lesquels je travaille).

Merci, Jay

Répondre

0

Un moyen rapide et sale est de regarder dans les vues de la base de données fournies (v sql_bind_capture et $ v SQLAREA de $). Dans le SQL ci-dessous, j'ai juste ajouté une clause like pour correspondre à l'instruction SQL que vous avez ci-dessus, vous obtiendrez alors une ligne pour chaque variable de liaison et sa valeur. Pour cibler une instruction SQL très spécifique, vous avez besoin de sql_id pour votre requête.

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%' 

sortie (sans SQL le résultat ressemblerait ressembler à quelque chose comme ça):

"NAME","POSITION","DATATYPE_STRING","VALUE_STRING" 
":B1","2","NUMBER","1001"