【发布时间】:2010-09-20 06:16:03
【问题描述】:
我正在运行一个 PL/SQL 块,它应该调用一个存储过程,而该存储过程的输出参数应该填充 PL/SQL 块中的变量。
过程编译,PL/SQL 块成功运行。但我想检查该过程填充的变量的值。有没有办法输出这些值?
如果有帮助,我正在使用 Free TOAD。
谢谢,
【问题讨论】:
我正在运行一个 PL/SQL 块,它应该调用一个存储过程,而该存储过程的输出参数应该填充 PL/SQL 块中的变量。
过程编译,PL/SQL 块成功运行。但我想检查该过程填充的变量的值。有没有办法输出这些值?
如果有帮助,我正在使用 Free TOAD。
谢谢,
【问题讨论】:
你有几个选择:
我的偏好是使用相当简单的自定义日志包记录到文件。在我的自定义日志包中,我有一个可配置的标志来在文件日志和 DBMS_OUTPUT 日志之间切换。
Oracle 调试 API 非常好,但您肯定需要一个好的调试客户端。 Oracle SQL Developer 对它有相当好的支持。
还有一个log4plsql logger,但我没用过。
【讨论】:
dbms_output.put_line(varHere);
【讨论】:
还存在第四个选项(我通常默认使用的选项).....将调试消息记录到数据库表中。这使您能够根据需要对调试消息进行排序、查询和过滤。
正如上面提到的darreljnz,log4plsql也可能支持记录到数据库。我发现 1) dbms_output 限制太多 2) 记录到文件需要太多设置,如果尚未设置 utl_file_dir 参数,则需要重新启动数据库 3) 在没有 GUI 帮助的情况下使用 dbms_debug 非常麻烦(但我已经做到了)
【讨论】:
如果您可以下载 Oracle jDeveloper jDeveloper Home page 或 Oracle Visual Studio 的副本,请添加 VS Plugin。两者都是免费的,并允许您在 db 上的 PL/SQL 中调试(设置断点、检查变量等)。您还需要数据库上的“调试”权限来执行此操作。但是,如果您拥有 dba 权限,则可以授予该权限。
【讨论】: