oracle - 如何使用 PL/SQL 查找序列是否存在

标签 oracle plsql

我需要使用 PL/SQL 查找是否有名为例如的特定序列MY_SEQ 退出。如果序列存在,则删除它并创建一个新序列,否则只创建一个新序列。

E.G. (伪代码)

IF EXISTS(MY_SEQ) THEN
BEGIN
   DROP SEQUENCE MY_SEQ;
   CREATE SEQUENCE MY_SEQ...
END;
ELSE
BEGIN
  CREATE SEQUENCE MY_SEQ;
END;

最佳答案

您可以检查字典 View ALL_SEQUENCES(如果执行用户是所有者,则检查USER_SEQUENCES),例如:

BEGIN
   FOR cc IN (SELECT sequence_name as sequence_exists
                FROM all_sequences
               WHERE sequence_owner = :seq_owner
                 AND sequence_name = :seq_name) LOOP
      -- sequence exists, drop it (at most there will be *one* sequence)
      EXECUTE IMMEDIATE 'DROP SEQUENCE XXX';
   END LOOP;
   -- create sequence
   EXECUTE IMMEDIATE 'CREATE SEQUENCE XXX';
END;

关于oracle - 如何使用 PL/SQL 查找序列是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573075/

相关文章:

php - Oracle 绑定(bind)所有 $_POST

mysql - 如何像tinder一样获得匹配,每个用户在表中都有自己的条目

oracle - 使用 PL/SQL 关联数组

sql - SUBSTR 在 CLOB 上的表现

sql - Teradata 中的 "First order by"

sql - 如何使用 Groovy 从 Oracle 获取光标?

sql - 在 Oracle 序列中生成相同的正负数

database - 如何从oracle中的一个作业中调用两个程序?

oracle - 从oracle存储过程中获取结果集

php - 使用 Doctrine (Symfony2) 查询表时缺少行