我有一个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”。我似乎无法找到如何配置它。我知道真正的价值观正在发挥作用,因为应用程序正在按预期响应,大部分时间(因此我正在处理的错误)。
谢谢, 杰
答案 0 :(得分:0)
一种快速而又脏的方法是查看提供的数据库视图(v $ sql_bind_capture和v $ sqlarea)。在下面的SQL中,我刚刚添加了一个like子句来匹配上面的sql语句,然后你会得到一个每个绑定变量的行和它的值。要定位一个非常特定的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"