当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中设置日志以显示参数化查询错误中的参数?
答案 0 :(得分: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;