Numa instalação Oracle, considere o script a seguir. create sequence xxxx; select xxxx.nextval from dual; A execução desse script provoca:
- A)a exibição do número 0;
Errada: uma sequence Oracle padrão não começa em 0, a menos que isso seja definido explicitamente em sua criação.
- B)a exibição do número 1;
Certa: sem parâmetros adicionais, a sequence inicia em 1, e o primeiro NEXTVAL retorna esse valor.
- C)a exibição do valor NULL;
Errada: NEXTVAL não retorna NULL, pois sequence foi criada exatamente para gerar valores numéricos válidos.
- D)a exibição dos números de 1 até 1000;
Errada: NEXTVAL não exibe uma faixa de números, mas apenas um único valor por chamada.
- E)um erro, pois não foi criada a tabela dual.
Errada: a tabela DUAL existe no Oracle e é usada justamente para esse tipo de consulta simples.
Gabarito: B
Em Oracle, a instrução CREATE SEQUENCE cria um gerador de números sequenciais. Por padrão, se você não informar START WITH, a sequência começa em 1. Além disso, o primeiro NEXTVAL já devolve o próximo valor da sequência, e não uma lista inteira de números nem valor nulo. Então, no script apresentado, ao executar select xxxx.nextval from dual, o resultado exibido será 1. A lógica é simples: sequence serve para produzir valores únicos, muito usada em chaves primárias e identificadores. O comando DUAL também não é um problema aqui, porque ele é uma tabela especial do Oracle criada justamente para consultas que retornam uma única linha. Ou seja, a consulta funciona normalmente. Por isso, o gabarito é a letra B. A sequência foi criada sem parâmetros adicionais, então assume o comportamento padrão do Oracle: início em 1, incremento de 1. No primeiro uso do NEXTVAL, o valor retornado é 1.