← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Num ambiente Oracle, considere os seguintes comandos: create sequence xpto; select xpto.nextval from dual d1, dual d2, dual d3; select xpto.currval from dual; Assinale o valor exibido pelo último comando.

Gabarito: B

Em Oracle, sequence é um objeto que gera números em ordem. O ponto-chave aqui é simples: o comando NEXTVAL avança a sequência e devolve o próximo valor, enquanto CURRVAL mostra o valor mais recente já gerado naquela sessão. Ou seja, CURRVAL não cria número novo, só “repete” o último que a sessão conseguiu obter com NEXTVAL. No enunciado, a sequência foi criada e depois houve um SELECT com xpto.nextval usando três linhas vindas de dual: d1, d2 e d3. Isso faz o NEXTVAL ser avaliado três vezes, gerando três números consecutivos. Em uma sequência recém-criada no Oracle, o valor inicial padrão é 1, então as chamadas retornam 1, 2 e 3. Depois disso, o comando `select xpto.currval from dual;` apenas consulta o último valor gerado na sessão. Como o último NEXTVAL foi 3, o CURRVAL também será 3. É exatamente essa a lógica que a FGV gosta de cobrar: NEXTVAL anda, CURRVAL olha no retrovisor. Se você lembrar da regra de ouro, não erra: CURRVAL só funciona depois de algum NEXTVAL na mesma sessão, e sempre mostra o último valor obtido. Aqui, portanto, o valor exibido no último comando é 3.

Continue treinando

Questões relacionadas