No âmbito do Oracle, analise o comando select xxxx.currval from dual Assinale a opção que identifica corretamente a natureza do objeto xxxx.
- A)User.
Errada, porque user não possui os atributos currval ou nextval no Oracle.
- B)Table.
Errada, porque table é uma estrutura de armazenamento de dados, não um gerador de valores sequenciais.
- C)Constraint.
Errada, porque constraint é regra de integridade, sem relação com currval.
- D)Sequence.
Certa, pois currval é uma pseudocoluna usada exclusivamente com sequence no Oracle.
- E)Tablespace.
Errada, porque tablespace é uma área lógica de armazenamento, sem ligação com currval.
Gabarito: D
No Oracle, a expressão "currval" aparece quando voce está lidando com uma sequence. Sequence é o objeto que gera valores numéricos automáticos, muito usado para chaves primárias. O detalhe importante é que "currval" retorna o valor atual da sequence na sessão, mas só depois de voce já ter usado "nextval" pelo menos uma vez. Antes disso, a sequence ainda não tem um valor corrente para aquela sessão, e o Oracle reclama. Na prática, o comando "select xxxx.currval from dual" mostra que "xxxx" precisa ser uma sequence, porque "currval" é uma pseudocoluna associada exclusivamente a esse tipo de objeto. A tabela DUAL entra só como apoio clássico do Oracle para consultas que retornam um único valor, quase um palco vazio para o número aparecer sozinho. Por isso, o gabarito é a letra D. Se o objeto fosse usuário, tabela, constraint ou tablespace, não faria sentido falar em currval, porque esse atributo não existe para esses objetos. Em prova, sempre que aparecer nextval ou currval, pense imediatamente em sequence.