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

Nik*_*lja 7 oracle plsql

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

EG(伪代码)

IF EXISTS(MY_SEQ) THEN
BEGIN
   DROP SEQUENCE MY_SEQ;
   CREATE SEQUENCE MY_SEQ...
END;
ELSE
BEGIN
  CREATE SEQUENCE MY_SEQ;
END;
Run Code Online (Sandbox Code Playgroud)

Vin*_*rat 10

您可以检查字典视图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;
Run Code Online (Sandbox Code Playgroud)