Как проверить, существует или нет последовательность в Oracle 11g?
Я использую Oracle 11g. Я хочу иметь возможность определить, существует ли определенная последовательность или нет. Я пробовал код ниже, но он не работает. (Он возвращает 0 в качестве значения счета, когда должно быть больше):
SELECT COUNT(*)
FROM user_sequences
WHERE sequence_name = 'SCHEMA.SEQUENCE_NAME';
Если кто-нибудь знает, почему это так, пожалуйста, помогите мне.
Ответы
Ответ 1
Если вы выполняете запрос как пользователь MP
, попробуйте его следующим образом:
SELECT COUNT(*)
FROM user_sequences
WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION';
else, попробуйте сделать это следующим образом:
SELECT COUNT(*)
FROM all_sequences
WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION'
AND sequence_owner = 'MP' ;
Ответ 2
Кроме того, имейте в виду, что вам не может быть предоставлен доступ ко всем последовательностям в БД.
В этом случае приведенные выше сценарии могут не работать, и вы должны запускать что-то вроде
SELECT COUNT(*) FROM DBA_SEQUENCES;
Но это также может не сработать, если у вас нет доступа к представлению DBA_SEQUENCES.
Отметьте Oracle docs.