Как получить значения всех последовательностей с помощью currval?

В примере: есть 3 последовательности ( seq1, seq2, seq3) и я хотел бы сделать один запрос, показывающий их имя и их текущее значение?

Основной синтаксис:

      select schema.seq_name.currval from dual

Но как показать ценность их всех?

2 ответа

Вы можете использовать user_sequences представление словаря данных, например

      SELECT s.sequence_name, s.last_number AS curr_value
  FROM user_sequences s
 WHERE s.sequence_name IN ('SEQ1','SEQ2','SEQ3') 

пока эти последовательности находятся в вашей текущей схеме. В противном случае это может быть заменено на all_sequences или dba_sequences в зависимости от ситуации или ваших потребностей.

Несмотря на мои глубокие сомнения относительно того, зачем вам вообще это нужно, я попытался собрать процедуру pl/sql в качестве демонстрации - отчасти просто для того, чтобы бросить вызов самому себе. Когда я столкнулся с проблемой, которая, как я думал, будет простой, мне просто нужно взглянуть на нее свежим взглядом, я разместил сообщение в OTN. В то время как они обращались к моей проблеме с кодированием, один ответ резюмировал вашу проблему:

вы не можете выбрать currval без вызова nextval. currval - это функция, которая возвращает последнее использованное значение последовательности через функцию nextval в вашем сеансе.

Другие вопросы по тегам