【发布时间】:2012-09-10 18:53:22
【问题描述】:
我一直在使用 PL/SQL 为 Oracle db 创建包,我正在尝试找到一种不使用“put_line”命令来调试 PL/SQL 包的好方法,有没有人有一些关于如何在 Toad 或 SQLPlus 上成功调试 PL/SQL 包?
【问题讨论】:
-
您查看过 Toad 的内置文档吗? (帮助->索引->关键字“调试”)
我一直在使用 PL/SQL 为 Oracle db 创建包,我正在尝试找到一种不使用“put_line”命令来调试 PL/SQL 包的好方法,有没有人有一些关于如何在 Toad 或 SQLPlus 上成功调试 PL/SQL 包?
【问题讨论】:
要启用调试,请授予以下权限并重新打开 TOAD。它总是对我有用。
GRANT ALTER SESSION TO <databaseUser>;
GRANT CREATE SESSION TO <databaseUser>;
GRANT EXECUTE ON DBMS_DEBUG to <databaseUser>;
GRANT ALTER ANY PROCEDURE TO <databaseUser>;
GRANT CREATE ANY PROCEDURE TO <databaseUser>;
GRANT DEBUG ANY PROCEDURE TO <databaseUser>;
GRANT DEBUG CONNECT SESSION TO <databaseUser>;
【讨论】:
首先,为了能够调试 PL/SQL 代码,必须具有适当的数据库权限才能进行调试。 (GRANT DEBUG CONNECT SESSION TO user)。如果您没有被授予此权限,您的 DB 工具(如 Quest TOAD)甚至可能不会显示调试选项或可能显示它已禁用。
其次,在调试之前,必须对代码(过程、函数或包)进行预编译以进行调试。当使用调试选项编译代码时,编译器会在编译后的代码中插入额外的数据,以便能够在调试过程中在断点处停止。 (使用Toggle compile with Debug 打开调试选项并编译您的代码)通过调试完成您的开发阶段后,您应该在不使用调试选项的情况下重新编译您的代码(关闭Toggle compile with Debug 并编译您的代码)。
然后您应该在代码中插入调试断点,并在执行期间要在调试器中跟踪的监视(变量)。
最后你应该用调试开始你的代码,执行将在第一个断点处停止,使用调试工具栏你可以在你的代码中进入、跳过、运行到光标...。
【讨论】:
根据 TOAD 的版本不同,图标和工具栏看起来会有所不同,但过程是一样的:
蟾蜍 9.7:
蟾蜍 11.6:
【讨论】: