Oracle 我们可以使用';创建或替换语句';在执行即时语句中?

Oracle 我们可以使用';创建或替换语句';在执行即时语句中?,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我正在使用oracle sql developer。在该代码中,我需要使用execute immediate语句来创建序列 我的要求是检查要创建的新序列是否存在。如果存在,则代码必须替换它。如果它不在那里,那么代码必须创建它 但是当我使用create或replace语句时,它会出错。如果我单独使用create语句,它工作得很好 然后,我使用一些case语句来确定我们试图创建的序列是否存在,然后我单独使用create语句来完成这项工作 我的问题是为什么我们不能在execute immediate语

我正在使用oracle sql developer。在该代码中,我需要使用execute immediate语句来创建序列

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

但是当我使用create或replace语句时,它会出错。如果我单独使用create语句,它工作得很好

然后,我使用一些case语句来确定我们试图创建的序列是否存在,然后我单独使用create语句来完成这项工作


我的问题是为什么我们不能在execute immediate语句中使用create或replace语句?

这里的问题不是使用
execute immediate
,而是您试图执行的语句。从文档中可以看出,Oracle的语法根本没有
或replace
变体,不管您如何执行它


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

这里的问题不是使用
executeimmediate
,而是您尝试执行的语句。从文档中可以看出,Oracle的语法根本没有
或replace
变体,不管您如何执行它


您有两种选择,一种是在尝试重新创建序列之前检查序列是否存在,另一种是尝试创建序列并捕获错误。

听起来像是在创建原子操作。我这样做是为了防止队列上并发选择中的竞争条件。我对Oracle不太清楚,但这个答案似乎是“合并”:听起来像是在创建一个原子操作。我这样做是为了防止队列上并发选择中的竞争条件。我对Oracle不太清楚,但这个答案似乎是“合并”:我可以理解我们如何只使用create语句。但是,executeimmediate语句不允许或替换变量。这是该语句的正常行为吗?@Kalyan该问题与
executeimmediate
无关。根本没有
或replace
变体。我能理解我们如何只使用create语句。但是,executeimmediate语句不允许或替换变量。这是该语句的正常行为吗?@Kalyan该问题与
executeimmediate
无关。根本没有
或replace
变体。