我们可以在立即执行语句中使用 'create or replace statement' 吗?

Can we use 'create or replace statement' in execute immediate statement?

我正在使用 oracle sql 开发人员。在该代码中,我需要使用立即执行语句来创建序列。

我的要求是检查要创建的新序列是否存在。如果它存在,则代码必须替换它。如果不存在,则代码必须创建它。

但是当我使用create或replace语句时,它出错了。如果我单独使用 create 语句,它工作正常。

然后,我使用一些 case 语句来查找我们要创建的序列是否存在,然后我单独使用 create 语句来完成此操作。

我的问题是为什么我们不能在立即执行语句中使用创建或替换语句?

这里的问题不是使用 execute immediate,而是您要执行的语句。从文档中可以看出,Oracle 的 create sequence 语法根本没有 or replace 变体,无论您如何执行它。

您有两个选择,要么在尝试重新创建序列之前检查该序列是否存在,要么只是尝试创建它并捕获错误。