是否可以在 oracle 11g 中删除和创建序列

is it possible to drop and create sequence in oracle 11g

我是序列的新手,我需要知道,是否可以在序列中使用 if else 块?要检查序列是否存在,请放入 if 块并在 else 块中重新创建相同的序列。

你的问题我不是很清楚。我试着按照我的理解来回答。

is it possible to use if else block in sequence?

如果通过上面的语句你想知道我们是否可以在序列 DDL 的主体内部使用 if else 构造,那么答案是 - 不,我们不能。序列 DDL 有一些预定义的参数,我们在创建序列时需要提及这些参数。 If-else 构造只能写在 plsql 块内,序列 DDL 没有提供任何 plsql 块,这与触发器不同。因此,不能在序列中提及 if-else。

To check if sequence exist drop in if block and in else block re create the same sequence.

从上面的陈述来看,您似乎想知道我们是否可以在 plsql 块内创建序列,因为您上面提到的 if-else 检查流程只能在 plsql 块内完成.答案是——是的,可以使用立即执行在 plsql 块内创建一个序列。请查看下面的代码以了解您的情况 -

if seq_exists then
  EXECUTE IMMEDIATE('drop sequence seq');
else
  EXECUTE IMMEDIATE('create sequence seq start with 1 cache 500');
end if;