从 oracle PL/SQL 查看变量的值

Posted

技术标签:

【中文标题】从 oracle PL/SQL 查看变量的值【英文标题】:view values of variables from oracle PL/SQL 【发布时间】:2010-09-20 06:16:03 【问题描述】:

我正在运行一个 PL/SQL 块,它应该调用一个存储过程,而该存储过程的输出参数应该填充 PL/SQL 块中的变量。

过程编译,PL/SQL 块成功运行。但我想检查该过程填充的变量的值。有没有办法输出这些值?

如果有帮助,我正在使用 Free TOAD。

谢谢,

【问题讨论】:

【参考方案1】:

你有几个选择:

使用 DBMS_OUTPUT 记录 使用 UTL_FILE 记录到文件 使用 Oracle 调试器 DBMS_DEBUG

我的偏好是使用相当简单的自定义日志包记录到文件。在我的自定义日志包中,我有一个可配置的标志来在文件日志和 DBMS_OUTPUT 日志之间切换。

Oracle 调试 API 非常好,但您肯定需要一个好的调试客户端。 Oracle SQL Developer 对它有相当好的支持。

还有一个log4plsql logger,但我没用过。

【讨论】:

【参考方案2】:
dbms_output.put_line(varHere);

【讨论】:

适用于 sqlplus 但不适用于 toad。至少它不适合我。 检查你的 TOAD 配置 - 你需要打开 'dbms_output' 并且你可能需要初始化 dbms_output 包(自从我做 oracle 以来已经太久了......)【参考方案3】:

还存在第四个选项(我通常默认使用的选项).....将调试消息记录到数据库表中。这使您能够根据需要对调试消息进行排序、查询和过滤。

正如上面提到的darreljnz,log4plsql也可能支持记录到数据库。我发现 1) dbms_output 限制太多 2) 记录到文件需要太多设置,如果尚未设置 utl_file_dir 参数,则需要重新启动数据库 3) 在没有 GUI 帮助的情况下使用 dbms_debug 非常麻烦(但我已经做到了)

【讨论】:

【参考方案4】:

如果您可以下载 Oracle jDeveloper jDeveloper Home page 或 Oracle Visual Studio 的副本,请添加 VS Plugin。两者都是免费的,并允许您在 db 上的 PL/SQL 中调试(设置断点、检查变量等)。您还需要数据库上的“调试”权限来执行此操作。但是,如果您拥有 dba 权限,则可以授予该权限。

【讨论】:

以上是关于从 oracle PL/SQL 查看变量的值的主要内容,如果未能解决你的问题,请参考以下文章

Oracle:PL/SQL 中查看值是不是存在的最快方法:列表、VARRAY 或临时表

oracle 的 PL/SQL 中的 & 和 : 有啥区别?

PL/SQL链接Oracle出现乱码

PL/SQL中如何查看变量的类型?

使用嵌套表在 Oracle PL/SQL 中构建动态 SQL

如何在 Oracle 中调试 PL/SQL 集合的值?