首页 > 解决方案 > PL/SQL 过程和 Toad 执行?

问题描述

我最近开始使用 Toad for Oracle 处理许多大型 Oracle PL/SQL 存储过程。这些过程的数量会更新并将内容插入表中。我的问题是,有没有办法在不永久修改任何表的情况下“安全地”执行 PL/SQL 过程?另外,如何在不实际更改数据库的情况下安全地修改和执行用于实验的存储过程?

标签: oraclestored-proceduresplsqltoad

解决方案


不管您是否拥有 Toad 或 SQ*Plus 或其他任何东西 - 一切都与代码有关。

首先 - 您的程序在存储过程中是否有任何提交或回滚?

第二 - 您的程序是否执行任何 DDL 工作:创建表?这将执行一个隐式 COMMIT。请注意,如果您的程序调用了另一个程序并且该程序有一个 COMMIT 或 DDL - 您在一个会话中就被 COMMITTED 作为它的全部。

第三 - 当你去执行你的存储过程时,你的匿名块在那里有一个 COMMIT 或 ROLLBACK 吗?

您的工具在第三位开始发挥作用。检查“执行”按钮后面的代码。

在 SQL Developer 中(在这方面类似于 Toad)...

在这种情况下,我的 SP 在代码中有一个提交 - 所以除非在该行之前出现异常......这是一个永久性更改。

在生成的匿名块中,有一个 ROLLBACK,但它被注释掉了。当您点击 GUI 中的执行按钮时,请查看那里的代码。如有必要,请更改它。

在此处输入图像描述


推荐阅读