代码之家  ›  专栏  ›  技术社区  ›  Nikola Stjelja

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

  •  6
  • Nikola Stjelja  · 技术社区  · 15 年前

    例如(伪码)

    IF EXISTS(MY_SEQ) THEN
    BEGIN
       DROP SEQUENCE MY_SEQ;
       CREATE SEQUENCE MY_SEQ...
    END;
    ELSE
    BEGIN
      CREATE SEQUENCE MY_SEQ;
    END;
    
    2 回复  |  直到 8 年前
        1
  •  11
  •   Vincent Malgrat    15 年前

    您可以查看字典视图 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;
    
        2
  •  1
  •   ZeissS    15 年前

    对此我有几个想法(都没有经过测试):

    1) Oracle通常支持 CREATE OR REPLACE

    3) 将execute\u immediate与 BEGIN .. EXCEPTION ... END