在远程数据库上查找PL / SQL函数的返回值

时间:2013-01-10 16:33:41

标签: database oracle logging plsql

我在远程客户端上运行了一个Oracle XXg数据库,并且无法重现测试环境。现在,有一个存储过程返回一个意外的值(它只是一个应该为零但返回其他数字的整数),我想发现它是哪个值。

我可以编辑函数和过程,但是如果不使用我无法调试的大型java应用程序,我就无法调用该函数。有没有办法将返回值记录到文本文件或数据库上的某些日志,以便我可以在执行后检查它?

如果没有这样的功能,什么是不那么麻烦的解决方法?

1 个答案:

答案 0 :(得分:1)

如何创建表来记录值?

CREATE TABLE mylog (t TIMESTAMP DEFAULT SYSTIMESTAMP, retval NUMBER);

CREATE OR REPLACE PROCEDURE yourprocedure 
AS
  myval NUMBER;

  PROCEDURE logval (myval NUMBER) AS PRAGMA autonomous_transaction;
  BEGIN
    INSERT INTO mylog(retval) VALUES (myval);
    COMMIT;
  END logval;
BEGIN
  -- your normal code
  myval := 1; 
  -- log the result
  logval(myval);
END yourprocedure;
/

然后您只需从表mylog ...

中选择值即可