PhpStorm 2021.3 Help

调试 Oracle PL/SQL 代码

调试器基于使用 DBMS_DEBUG 包的 API 的 Oracle Probe,并且应该在 Oracle 服务器 9.0 及更高版本上工作。

在 Oracle 中,您可以调试以下程序单元(PL/SQL 程序):匿名块、包、过程、函数和触发器。

步骤 1. 创建 PL/SQL 对象

  1. 右键单击 Oracle 数据源并选择Open Console Ctrl+Shift+F10

  2. 在控制台中键入或粘贴您的代码。

  3. 单击执行按钮执行按钮或按下Ctrl+Enter以运行程序代码。

    因此,您会在数据库工具窗口(查看 | 工具窗口 | 数据库)中看到一个创建的对象。

创建一个 PL/SQL 对象

GitHub上程序的代码片段

步骤 2. 使用调试选项编译 PL/SQL 对象

要启用 PL/SQL 代码的调试,您需要使用该debug选项对其进行编译。编译过程将 PL/SQL 代码转换为 Pro*C,然后编译为 Oracle 共享库。编译有助于 Oracle 解释器更快地处理您的代码。

  1. 右键单击要调试的 PL/SQL 对象并选择Database Tools | 重新编译

  2. Recompile对话框中,选择With "debug" option

  3. 单击确定

    编译调试代码

步骤 3. 调试 PL/SQL 程序单元

通过匿名块调试 PL/SQL 过程和函数

PL/SQL 程序单元将代码组织成块。没有名称的块是匿名块。匿名块不存储在 Oracle 数据库中。在调试过程中,您使用匿名块来传递参数值。

要调试过程、包和函数,请编写一个调用必要例程的匿名块。

  1. Database工具窗口(View | Tool Windows | Database)中,双击您为调试而创建编译的 PL/SQL 对象。

  2. 单击运行过程按钮运行程序按钮。如果未选择会话,请从下拉列表中选择一个会话。有关管理会话的更多信息,请参阅管理连接会话

  3. Execute Routine对话框中,单击Open in console图标 ( 在控制台中打开图标) 以在 Oracle 控制台中打开匿名块。或者,您可以手动将匿名块复制并粘贴到控制台。

  4. 在匿名块和在这个匿名块中引用的 PL/SQL 程序对象中放置断点。

  5. (可选)修改参数值。

  6. 单击调试

    通过匿名块调试 PL/SQL 程序对象

GitHub上程序的代码片段

通过匿名块调试 PL/SQL 包

包是对逻辑相关的 PL/SQL 类型、项和子程序进行分组的模式对象。

就像使用过程和函数一样,要调试包,编写调用必要例程的匿名块。

  1. 在“数据库”工具窗口(查看 | 工具窗口 | 数据库)中,双击您为调试而创建编译的包。

  2. 在包中放置断点。

  3. 右键单击 Oracle 数据源并选择Open Console Ctrl+Shift+F10

  4. 在 Oracle 控制台中,编写一个触发该过程的匿名块。

  5. 单击调试

    通过匿名块调试 PL/SQL 程序对象

GitHub上包的代码片段

GitHub上匿名块的代码片段

通过查询调试 PL/SQL 触发器

触发器是一个 PL/SQL 程序单元,当您发出 INSERT、UPDATE 或 DELETE 查询时,DBMS 会自动调用它。触发器与表相关联,并在您插入、更新或删除数据行之前或之后调用。一个表可以有多个触发器。

要调试触发器,请将 INSERT、UPDATE 或 DELETE 查询写入表或视图。

  1. 右键单击 Oracle 数据源并选择Open Console Ctrl+Shift+F10

  2. 在控制台中键入查询。

  3. 在触发器中放置断点。

  4. 单击调试

    通过匿名块调试 PL/SQL 程序对象

GitHub 上的触发器代码片段

步进模式

调试 PL/SQL 代码时,您可以在两种步进模式之间进行选择:GracefulNative

优雅模式下,您可以暂停您调试的会话(目标会话),设置和删除断点。如果没有设置有效的断点,调试器将逐行逐行执行代码。

在本模式下,调试器使用 Oracle 本机调试命令。您无法暂停目标会话或管理断点,但您可能会在 CPU 密集型操作(包括大量计算和循环的操作)中体验到性能提升。您可以在 Oracle官方文档中阅读有关 Oracle 调试命令的更多信息。如果没有设置有效断点,调试器将执行整个例程。

改变步进模式

  1. 打开设置 ( Ctrl+Alt+S) 并导航到构建、执行、部署 | 调试器 | 踏步

  2. 步进模式列表中,选择您需要的步进模式。

在可调试代码的开头暂停

您可以强制调试器在可调试代码的开头暂停。自动检测调试器暂停的地方。如果在声明部分分配变量值,调试器会在变量声明处暂停。如果没有为变量赋值,调试器会跳过声明部分并在BEGIN执行部分的关键字处暂停。

  1. 打开设置 ( Ctrl+Alt+S) 并导航到构建、执行、部署 | 调试器 | 踏步

  2. 选择开始时暂停

在可调试代码的开头暂停
最后修改:2021 年 8 月 27 日