No Oracle, considere que o comando a seguir tenha sido exec...

Próximas questões
Com base no mesmo assunto
Q914404 Banco de Dados

No Oracle, considere que o comando a seguir tenha sido executado com sucesso.


create sequence exemplo

    start with 100

    increment by 10

    order;


Logo na sequência, os comandos


    select exemplo.nextval from dual;

    select exemplo.nextval from dual;

    select exemplo.currval from dual;

são executados em bloco.


Assinale a opção que exibe o resultado produzido.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B

Para resolver esta questão, é necessário compreender o funcionamento de sequências no Oracle (Oracle sequences). Uma sequência é um objeto no banco de dados que gera números sequenciais que podem ser úteis como valores únicos, por exemplo, para chaves primárias. Ao criar uma sequência com o comando CREATE SEQUENCE, o usuário pode especificar várias opções, como onde começar a contagem (START WITH), a quantidade a ser incrementada a cada nova chamada (INCREMENT BY) e se a geração dos números vai ser em ordem garantida no ambiente de múltiplos usuários utilizando a cláusula ORDER.

O primeiro SELECT com exemplo.nextval irá gerar o primeiro valor da sequência, partindo do valor determinado em START WITH, ou seja, 100. O segundo SELECT com exemplo.nextval irá incrementar a sequência pelo valor especificado em INCREMENT BY, assim gerando 110. Por fim, o SELECT com exemplo.currval irá retornar o valor atual da sequência, que após o segundo SELECT é 110, sem incrementar a sequência novamente.

exemplo.currval retorna o último valor gerado da sequência na sessão atual, e não gera um novo valor. Portanto, o resultado dos comandos executados é:

100 (primeira chamada de nextval)
110 (segunda chamada de nextval)
110 (consulta ao valor atual com currval)

É vital entender que o currval não pode ser utilizado antes do nextval ter sido chamado pelo menos uma vez na sessão atual, pois a sequência precisa de um "valor atual" para retornar.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Nextval --> incrementa a sequência, que começa com o numero 100 e é  incrementada de 10 em 10.

Currval --> só pode ser usado após o nextval, ele mostra o valor atual da sequência.

SQL> create sequence exemplo start with 100 increment by 10 order;

Sequencia criada.

SQL> select exemplo.nextval from dual;

   NEXTVAL

     ----------

       100

SQL> select exemplo.nextval from dual;

   NEXTVAL

   ----------

       110

SQL> select exemplo.currval from dual;

   CURRVAL

    ----------

       110

 

Mais informações:

https://maximodb.wordpress.com/2014/12/02/sequence-currval-nextval/ 

b-

  start with 100

    increment by 10

    order;

//a sequence inicia 100 e incrementa de 10 em 10: 100, 110, 120 etc

Logo na sequência, os comandos

    select exemplo.nextval from dual; -100

    select exemplo.nextval from dual; - 110

    select exemplo.currval from dual; - 110

currval -> current value

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo