【发布时间】:2021-04-22 15:30:23
【问题描述】:
是否可以在不进行永久更改的情况下验证 PL/SQL 代码。
我知道可以commit 然后rollback,但我正在寻找是否有其他解决方案。
例如,如果我编写了一个程序并且我想知道它是否能正确编译。
我正在使用 Oracle SQL Developer,但没有看到任何选项。
【问题讨论】:
-
没有。将该过程复制到不同的名称,即“test”到“test2”并编译test2,然后将其删除。 commit 和 rollback 用于 DML 语句,而不是 pl/sql 编译,对此没有影响。
-
为什么不希望创建这种情况下的过程?我很难想到我要开发一个程序但只想看看它是否会编译而不是实际创建它的原因。我能想到的唯一原因是,如果我正在做一些事情,比如在 prod 中而不是在开发环境中编写代码。理论上,您可以将过程转换为匿名块并对其执行
dbms_sql.parse以查看它是否解析。我只是很难理解你为什么要这样做。 -
@JustinCave 也许他正在生产环境中开发;)?
-
@KoenLostrie - 在这种情况下,这是一个经典的 XY 问题meta.stackexchange.com/questions/66377/what-is-the-xy-problem
-
否! 您不能回滚编译。此外,编译本身就像一个 DDL 语句。它提交,即使编译有错误。见fiddle。您最好的选择是维护您的版本控制和备份。测试完成后,您可以恢复数据并在需要时恢复程序。
标签: sql oracle plsql oracle-sqldeveloper oracle19c