2

当 Oracle 记录参数化 SQL 查询失败时,它会显示“?” 代替参数,即替换参数前的查询。例如,

"SELECT * FROM table where col like '?'" 
SQL state [99999]; error code [29902]; 
ORA-29902: error in executing ODCIIndexStart() routine ORA-20000: 
  Oracle Text error: DRG-50901: 
  text query parser syntax error on line 1, column 48

有没有办法更改日志记录以显示参数值?除非我能看到实际的解析问题是什么,否则上面的信息绝对没用。

一般来说,有没有办法在Oracle中设置日志以显示参数化查询错误中的参数?

4

1 回答 1

2

如果您正在运行 Oracle 10g 或更高版本并且您可以访问 V$ 视图,那么您可以使用 v$sql_bind_capture 来查看这些值。

以下查询是从 Burleson 的网站借用的:

SELECT 
   a.sql_text, 
   b.name, 
   b.position, 
   b.datatype_string, 
   b.value_string 
FROM
   v$sql_bind_capture b,
   v$sqlarea          a
WHERE
   b.sql_id = 'The SQL ID'
AND 
   b.sql_id = a.sql_id;
于 2012-10-02T21:35:28.333 回答