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

时间:2016-01-21 12:18:25

标签: sequence

我是序列的新手,我需要知道,是否有可能在序列中使用if else块?要检查序列是否存在,如果block和in else块重新创建相同的序列,则会丢弃。

1 个答案:

答案 0 :(得分:0)

你的问题对我来说并不完全清楚。我试图按照我的理解回复。

  

是否可以按顺序使用if else?

如果通过上面的陈述你试图知道我们是否可以在序列DDL的主体内使用if else构造,那么答案是 - 不,我们不能。序列DDL有一些预定义的参数,我们在创建序列时需要提及这些参数。 if-else构造只能写入plsql块,而序列DDL没有提供任何plsql块而不像trigger。因此,if-else不能在序列中提及。

  

要检查序列是否存在,如果是块,则在其中阻塞   创建相同的序列。

从上面的语句来看,你似乎在试图知道我们是否可以在plsql块中创建序列,因为上面提到的if-else检查的流程只能在plsql块中完成。答案是 - 是的,可以使用execute immediate在plsql块中创建序列。请参阅下面的代码 -

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