我有一个SQL脚本,可以根据某些条件更新数据库过程或更改表。如果过程或表在运行时不存在,脚本也应工作(在这种情况下,应更新注释)。

在MSSQL中,我可以使用NOEXEC实现此目标,如下所示:

IF NOT EXISTS (select * from sysobjects where name ='MY_PROC1')
  SET NOEXEC ON
GO
--the following code will not be executed in the server
ALTER PROCEDURE [MY_PROC1]
(
    code that alter the procedure
)
GO

SET NOEXEC OFF
GO

Oracle中是否有与NOEXEC等效的命令?或者在Oracle中以一种优雅的方式编写类似的脚本,但不使用“dynamic-sql”。我不想用引号将代码包装起来。

最佳答案

谢谢大家的评论。
不幸的是,Oracle没有用于MsSql NOEXEC的等效命令:(dbms_sql.parse()EXPLAIN PLAN建议的解决方法不完全符合我的需求。

10-04 19:45