我需要使用 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/