2012-06-13 21 views
17

我正在使用Oracle 11g。我希望能夠確定一個特定的序列是否存在。我試過下面的代碼,但它不起作用。 (它應該有更多的時候返回0作爲計數值):如何檢查Oracle 11g中是否存在序列?

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

如果有人知道這是爲什麼,請幫助我。

回答

31

如果你正在運行的查詢作爲用戶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' ; 
+0

謝謝,工作很好。 = d –

0

另外,請記住,你可能不授予查看DB中的所有序列。 在上面提供的這種情況下,腳本可能無法正常工作,你應該執行類似

SELECT COUNT(*) FROM DBA_SEQUENCES; 

但這個如果你有DBA_SEQUENCES視圖沒有訪問也可能無法工作。

檢查Oracle docs