5

我一直在使用 PL/SQL 为 Oracle db 创建包,我正在尝试找到一种在不使用“put_line”命令的情况下调试 PL/SQL 包的好方法,有没有人有一些关于如何成功调试的好技巧Toad 或 SQLPlus 上的 PL/SQL 包?

4

3 回答 3

12

根据 TOAD 的版本,图标和工具栏看起来会有所不同,但过程是相同的:

  1. 确保打开“使用调试切换编译”选项
  2. 点击“编译”按钮
      一种。设置断点
  3. 单击“使用调试器执行 PLSQL”

蟾蜍 9.7

蟾蜍 9.7

蟾蜍 11.6

蟾蜍 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 回答