programing

오라클 11g에 시퀀스가 있는지 확인하려면 어떻게 해야 합니까?

newstyles 2023. 7. 13. 20:43

오라클 11g에 시퀀스가 있는지 확인하려면 어떻게 해야 합니까?

저는 Oracle 11g를 사용하고 있습니다.저는 특정 시퀀스가 존재하는지 여부를 확인할 수 있기를 원합니다.아래 코드를 시도해 보았지만 작동하지 않습니다. (더 많아야 할 경우 카운트 값으로 0을 반환합니다.):

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

이유를 아시는 분이 계시다면 저를 도와주세요.

쿼리를 사용자로 실행하는 경우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' ;

또한 DB의 모든 시퀀스를 볼 수 있는 권한이 부여되지 않을 수도 있습니다.이 경우 위에 제공된 스크립트가 작동하지 않을 수 있으며 다음과 같은 작업을 실행해야 합니다.

SELECT COUNT(*) FROM DBA_SEQUENCES;

그러나 DBA_SECENCES 보기에 액세스할 수 없는 경우에도 작동하지 않을 수 있습니다.

Oracle 문서를 확인합니다.

최신/11g 버전의 경우 다음 쿼리가 작동합니다.한 가지 제안은, 시퀀스 이름에 소문자를 사용했기 때문에 처음에는 작동할 수 없었습니다.기대값을 모두 상한으로 설정합니다.

SELECT * FROM all_objects ao WHERE ao.owner = 'SCHEMA_NAME' AND ao.OBJECT_TYPE ='SEQUENCE' 
AND ao.OBJECT_NAME ='CAPITAL_SEQ_NAME';

언급URL : https://stackoverflow.com/questions/11013504/how-do-i-check-if-a-sequence-exists-or-not-in-oracle-11g