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

一种快速而肮脏的方法是查看提供的数据库视图(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"
于 2009-11-24T16:53:05.980 回答