No Oracle, considere que o comando a seguir tenha sido exec...
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.
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