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