我一直在使用 PL/SQL 为 Oracle db 创建包,我正在尝试找到一种在不使用“put_line”命令的情况下调试 PL/SQL 包的好方法,有没有人有一些关于如何成功调试的好技巧Toad 或 SQLPlus 上的 PL/SQL 包?
问问题
50127 次
3 回答
12
根据 TOAD 的版本,图标和工具栏看起来会有所不同,但过程是相同的:
- 确保打开“使用调试切换编译”选项
- 点击“编译”按钮
- 一种。设置断点
- 单击“使用调试器执行 PLSQL”
蟾蜍 9.7:
蟾蜍 11.6:
于 2012-10-05T17:09:08.440 回答
2
首先,为了能够调试 PL/SQL 代码,必须具有适当的数据库权限才能进行调试。( GRANT DEBUG CONNECT SESSION TO user
)。如果您没有被授予此权限,您的 DB 工具(如 Quest TOAD)甚至可能不会显示调试选项或显示它已禁用。
其次,在调试之前,必须对其代码(过程、函数或包)进行预编译以进行调试。当使用调试选项编译代码时,编译器会在编译后的代码中插入额外的数据,以便能够在调试过程中在断点处停止。(打开调试选项Toggle compile with Debug
并编译您的代码)在您完成调试阶段的开发阶段后,您应该重新编译您的代码而不使用调试选项(关闭Toggle compile with Debug
并编译您的代码)。
然后,您应该将调试断点插入到您的代码中,并在执行期间在调试器中跟踪您想要跟踪的(变量)。
最后,您应该使用调试启动代码,执行将在第一个断点处停止,并使用调试工具栏,您可以在代码中单步执行、跳过、运行到光标...。
于 2017-05-25T06:50:14.810 回答
0
要启用调试,请授予以下权限并重新打开 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>;
于 2021-01-02T16:44:08.497 回答