OJB / Oracle XE sql проблема с отображением отладки

У меня есть приложение Java, и я использую OJB в качестве технологии ORM. У меня есть локальная установка Oracle XE для разработки. Проблема в том, что когда мне нужно отладить проблему, мне нравится смотреть на вывод SQL. Вот пример SQL, который я могу просмотреть через интерфейс "Top SQL" в Oracle XE:

 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". Я не могу найти, как я могу настроить это. Я знаю, что реальные значения работают, потому что приложение реагирует, как и ожидалось, по большей части (отсюда и ошибки, над которыми я работаю).

Спасибо джей

1 ответ

Один быстрый и грязный способ - просмотреть предоставленные представления базы данных (v$sql_bind_capture и v$sqlarea). В приведенном ниже SQL-коде я просто добавил предложение like, соответствующее приведенному выше SQL-выражению, после чего вы получите строку для каждой переменной bind и ее значение. Чтобы нацелиться на очень конкретный оператор 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"
Другие вопросы по тегам