Logging 登录动态SQL

Logging 登录动态SQL,logging,plsql,dynamic-sql,Logging,Plsql,Dynamic Sql,我有一个使用动态sql的存储过程。当从Java调用proc时,SQLSTR1编译时,是否有任何方法记录发生的编译错误。或者记录相关的变量 SQLSTR1:= ' SELECT NVL(SUM(TOTAL_B),0) CURRENT_VAL,' || COL_NAME|| ' FROM view1 WHERE(R_DATE IS NULL OR R_DATE >:EOQ) AND (LOCATION IN (' || COMMA_FUNC(LOCATIO) || ')

我有一个使用动态sql的存储过程。当从Java调用proc时,
SQLSTR1
编译时,是否有任何方法记录发生的编译错误。或者记录相关的变量

SQLSTR1:= ' SELECT NVL(SUM(TOTAL_B),0) CURRENT_VAL,' || COL_NAME|| ' 
    FROM view1 WHERE(R_DATE  IS NULL OR R_DATE >:EOQ) 
    AND (LOCATION IN  (' || COMMA_FUNC(LOCATIO) || ') OR :LOCATIO = ''NULL'')
     GROUP BY ' || COL_NAME;  

    OPEN CURRENT_CURSOR FOR SQLSTR1 USING EOQ, LOCATIO;

管理进程的人不在,我需要进行一些调试。请帮忙

至少可以通过查看v$sql\u bind\u capture来显示绑定变量的值:“v$sql\u bind\u capture显示sql游标使用的绑定变量的信息。视图中的每一行包含游标中定义的一个绑定变量的信息。”请参阅

简单的例子:

DECLARE
    TYPE ct IS REF CURSOR;
    c ct;
    q VARCHAR2(255);
BEGIN
    q := 'SELECT * FROM dual WHERE dummy = :EOQ OR dummy = :LOCATIO';
    OPEN c FOR q USING 'X', 'Y';
    CLOSE c;
END;
/

SELECT
     sql_id
    ,name
    ,value_string
    ,TO_CHAR(last_captured, 'DD.MM.YYYY HH24:MI:SS')
FROM v$sql_bind_capture
WHERE NAME IN (':EOQ', ':LOCATIO');
--
a2vmmmcumuv5v   :EOQ       X   14.11.2013 22:09:05
a2vmmmcumuv5v   :LOCATIO   Y   14.11.2013 22:09:05
                         ^^^^^
                       as expected

至少可以通过查看v$sql\u bind\u capture来显示绑定变量的值:“v$sql\u bind\u capture显示sql游标使用的绑定变量的信息。视图中的每一行包含游标中定义的一个绑定变量的信息。”请参阅

简单的例子:

DECLARE
    TYPE ct IS REF CURSOR;
    c ct;
    q VARCHAR2(255);
BEGIN
    q := 'SELECT * FROM dual WHERE dummy = :EOQ OR dummy = :LOCATIO';
    OPEN c FOR q USING 'X', 'Y';
    CLOSE c;
END;
/

SELECT
     sql_id
    ,name
    ,value_string
    ,TO_CHAR(last_captured, 'DD.MM.YYYY HH24:MI:SS')
FROM v$sql_bind_capture
WHERE NAME IN (':EOQ', ':LOCATIO');
--
a2vmmmcumuv5v   :EOQ       X   14.11.2013 22:09:05
a2vmmmcumuv5v   :LOCATIO   Y   14.11.2013 22:09:05
                         ^^^^^
                       as expected