记录一致性错误日志可以简化PL-SQL调试
2007-07-03 12:36:39 来源:WEB开发网核心提示: 其中pragma autonomous_transaction部分是十分重要的,因为你保证log方法能够将日志数据提交到数据表中,记录一致性错误日志可以简化PL-SQL调试(3),否则要提交过程中导致错误发生的任何相关信息,这就是pragma段完成的功能,我们会有一个所有出错过程和函数的记
其中pragma autonomous_transaction部分是十分重要的,因为你保证log方法能够将日志数据提交到数据表中,否则要提交过程中导致错误发生的任何相关信息。这就是pragma段完成的功能。它告诉Oracle将该过程作为原子操作,不能影响早期调用堆栈中的任何信息。
当然最后一步是将日志信息应用到代码中。例如,比如说你有一个简单的小函数,并且无论何时发生异常,你都希望能够记录它且还要避免再次发生错误。换句话说,记录错误并使应用能够继续运行。你可能需要做以下工作:
CREATE OR REPLACE FUNCTION hello_world RETURN VARCHAR2 IS
v_ procedure errorlog.procedure_name%TYPE default 'hello_world';
v_ location errorlog.location%TYPE;
BEGIN
v_location := 1000;
return ('hello, world');
EXCEPTION
when others then
pkg_error.log(p_error_code => substr(sqlerrm,1,9),
p_error_message => substr(sqlerrm,12),
p_package => 'FUNCTION',
p_procedure => v_procedure,
p_location => v_location);
END;
很明显,如果是在包内,你需要根据你创建的包的实际名称创建一个全局变量,并将它传递给p_package参数替代我们此处使用的字符串常量。
这非常相似,我并不想说这是PL/SQL中记录错误的最好方法。我从事这方面的工作只有一年多,所以无论如何我都不是一个专家。
但是这种记录方法使得调试我的应用程序变得十分简单。如果出现某个错误,我们会有一个所有出错过程和函数的记录,因此,我们可以很快追踪问题的根源。
更多精彩
赞助商链接