Pseudocolunas são colunas que não fazem parte da tabela, mas...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D - COLNUM – Número da coluna selecionada em uma tabela. Não é afetada pela cláusula ORDER BY.
Para resolver essa questão, é importante entender o conceito de pseudocolunas no contexto do PL/SQL e do Oracle Database. As pseudocolunas são campos que, embora não sejam armazenados em uma tabela, podem ser referenciados em queries como se fossem colunas reais. Elas fornecem dados dinâmicos ou derivados cada vez que são acessadas.
As opções A, B e C descrevem pseudocolunas legítimas:
- CURRVAL é usada para obter o valor atual de uma sequência no banco de dados.
- NEXTVAL é usada para obter o próximo valor de uma sequência, incrementando a sequência no processo.
- ROWNUM é uma pseudocoluna que retorna um número de linha para cada linha retornada em uma consulta. Importante notar que ela é influenciada pela ordem em que as linhas são retornadas, mas não pelo uso da cláusula ORDER BY na consulta.
Já a alternativa D, COLNUM, não é uma pseudocoluna válida no Oracle PL/SQL. Não existe uma pseudocoluna chamada COLNUM que forneça um número para a coluna selecionada em uma consulta, o que faz com que a opção D seja a correta para a pergunta sobre qual das opções NÃO é uma pseudocoluna no PL/SQL.
Essa questão exige do candidato conhecimento específico sobre as características e utilização de pseudocolunas dentro do banco de dados Oracle. Para responder corretamente, é essencial que o candidato esteja familiarizado com os diferentes tipos de pseudocolunas e suas funcionalidades.
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
Acertei pelo motivo errado. Pensei que a pseudocoluna COLNUM era afetada pela ORDER BY.
Porém, ela não existe.
A justificativa da alternativa C está errada, ao afirmar que ROWNUM não é afetada pela cláusula ORDER BY. Veja o que diz a documentação do oracle:
You can use to limit the number of rows returned by a query, as in this example:
SELECT * FROM emp WHERE ROWNUM < 10;
You can use to limit the number of rows returned by a query, as in this example:
If an clause follows in the same query, the rows will be reordered by the clause. The results can vary depending on the way the rows are accessed. For example, if the clause causes Oracle to use an index to access the data, Oracle may retrieve the rows in a different order than without the index. Therefore, the following statement will not have the same effect as the preceding example:
SELECT * FROM emp WHERE ROWNUM < 11 ORDER BY empno;
fonte: https://docs.oracle.com/cd/A81042_01/DOC/server.816/a76989/ch26.htm
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo