如何在toad中监视存储过程的执行?我尝试监视的内容摘要:
Procedure ArchiveData ( Param 1, Param 2, Param 3, Param 4)(
Variable 1 := Some calc using above params;
Variable 2 := Some calc using above params;
Call_to_another_procedure2(Param3, Param 4,variable 1);
Call_to_another_procedure3(Param3, Param 4,variable 1);
End;
是否有办法查看所有使用参数值执行的语句,包括调用过程/函数中的语句?
我用的是Toad 14.1
谢谢你的帮助!
尝试使用会话浏览器和sql监视器,但没有帮助
1条答案
按热度按时间s2j5cfk01#
调试PL/SQL的典型方法是通过
dbms_output.put_line
发出消息,这在大多数数据库客户端软件产品中都可以看到。虽然有时你必须在设置/选项中启用它,它可能会出现在一个单独的选项卡或屏幕中,而不是你的结果通常做.在内部,这些产品只是在一个循环中调用dbms_output.get_line
,并显示输出给你,直到没有任何更多的缓冲区.您可以通过调用put_line
在PL/SQL中加载缓冲区。第二件事,实际上更重要,是良好的异常处理。您应该处理靠近潜在错误点的异常,并始终确保您要么重新引发客户端,要么报告这些错误(dbms_output,logging table,etc..),并带有完整的错误堆栈和调用堆栈。错误堆栈是最重要的,因为它会告诉你抛出异常的确切行号。通常如果一个异常被抛出到客户端,客户端会给予你整个错误堆栈,你就有了你需要的东西。如果没有,你可以自己获取。
示例:
当然,你也可以用其他方式来使用异常处理,比如不向客户端重新引发异常,而是向前移动,或者返回一个状态码而不是异常,等等。但是这应该会给予你一个想法。目标是总是知道什么地方失败了,在什么行号,在PL/SQL程序中的什么地方,以及哪个异常处理程序堆栈将它重新引发回客户端,等等。所有有用的信息。
至于01403错误,请查找可能找不到任何行的
SELECT INTO
语句,并查找可能不存在的任何集合/数组下标。