oracle - PL/SQL 过程和 Toad 执行?
问题描述
我最近开始使用 Toad for Oracle 处理许多大型 Oracle PL/SQL 存储过程。这些过程的数量会更新并将内容插入表中。我的问题是,有没有办法在不永久修改任何表的情况下“安全地”执行 PL/SQL 过程?另外,如何在不实际更改数据库的情况下安全地修改和执行用于实验的存储过程?
解决方案
不管您是否拥有 Toad 或 SQ*Plus 或其他任何东西 - 一切都与代码有关。
首先 - 您的程序在存储过程中是否有任何提交或回滚?
第二 - 您的程序是否执行任何 DDL 工作:创建表?这将执行一个隐式 COMMIT。请注意,如果您的程序调用了另一个程序并且该程序有一个 COMMIT 或 DDL - 您在一个会话中就被 COMMITTED 作为它的全部。
第三 - 当你去执行你的存储过程时,你的匿名块在那里有一个 COMMIT 或 ROLLBACK 吗?
您的工具在第三位开始发挥作用。检查“执行”按钮后面的代码。
在 SQL Developer 中(在这方面类似于 Toad)...
在这种情况下,我的 SP 在代码中有一个提交 - 所以除非在该行之前出现异常......这是一个永久性更改。
在生成的匿名块中,有一个 ROLLBACK,但它被注释掉了。当您点击 GUI 中的执行按钮时,请查看那里的代码。如有必要,请更改它。
推荐阅读
- python - 为什么 google colab 可以从桌面读取我导入的文件?
- git - 从 Git 存储库中删除文件的正确方法是什么?
- tizen - 加快 genlist 项目的滚动?
- visual-studio - 用扩展替换 Visual Studio 构建系统
- matlab - 基于分布函数生成随机数
- reactjs - Reactjs antd modal 自定义选择
- mongodb - 使用 updateOne 聚合管道
- c# - 根据机器本地设置,将带有时区的日期时间解析为 DateTimeOffset 的行为会有所不同
- git - 在本地 git 分支之间传输文件
- r - 使用 dplyr 根据低于某个值的观察数删除组