2012-09-21 69 views
2

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

"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中设置日志以显示参数化查询错误中的参数?

回答

2

如果您运行的是Oracle 10g或更高版本,并且您有权访问V $视图,则可以使用v $ sql_bind_capture查看这些值。

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; 

下面的查询是从伯利森的网站借