我在远程客户端上运行了一个Oracle XXg数据库,并且无法重现测试环境。现在,有一个存储过程返回一个意外的值(它只是一个应该为零但返回其他数字的整数),我想发现它是哪个值。
我可以编辑函数和过程,但是如果不使用我无法调试的大型java应用程序,我就无法调用该函数。有没有办法将返回值记录到文本文件或数据库上的某些日志,以便我可以在执行后检查它?
如果没有这样的功能,什么是不那么麻烦的解决方法?
答案 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
...