如何检查Oracle 11g中是否存在序列?

时间:2012-06-13 11:02:50

标签: oracle oracle11g sequence

我正在使用Oracle 11g。我希望能够确定特定序列是否存在。我已经尝试了下面的代码,但它无法正常工作。 (当应该有更多时,它返回0作为计数值):

SELECT COUNT(*)
FROM user_sequences
WHERE sequence_name = 'SCHEMA.SEQUENCE_NAME';

如果有人知道为什么会这样,请帮助我。

2 个答案:

答案 0 :(得分:38)

如果您以用户MP身份运行查询,请按以下方式尝试:

SELECT COUNT(*) 
FROM user_sequences 
WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION';

否则,请尝试这样:

SELECT COUNT(*) 
FROM all_sequences 
WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION'
AND sequence_owner = 'MP' ;

答案 1 :(得分:0)

另外,请记住,您可能无法查看DB中的所有序列。 在这种情况下,上面提供的脚本可能不起作用,您应该运行类似

的内容
SELECT COUNT(*) FROM DBA_SEQUENCES;

但如果您无权访问DBA_SEQUENCES视图,这也可能无效。

检查Oracle docs