1
resposta

Dúvida sobre consulta

Foi falado na aula, que não existe no Oracle consulta que informe somente as ultimas linhas com rownum, somente com subconsultas.

Eu conheço uma função que seria, FETCH Last N row only, é considerado uma subconsulta?

1 resposta

Oi, Aleff! Tudo bem?

Peço desculpas por demorar a te responder.

A função FETCH não é considerada uma subconsulta, mas sim uma cláusula que pode ser utilizada em conjunto com a instrução SELECT com saída ordenada por ORDER BY para limitar o número de linhas retornadas.

Por exemplo, para obter somente as últimas 10 linhas de uma tabela, a consulta ficaria assim:

SELECT *
FROM (
   SELECT *
   FROM tabela
   ORDER BY coluna DESC
)
WHERE ROWNUM <= 10;

Já com a cláusula FETCH, a consulta ficaria assim:

SELECT *
FROM tabela
ORDER BY coluna DESC
FETCH LAST 10 ROWS ONLY;

Entretanto, a cláusula FETCH infelizmente não está disponível para a versão Express Edition da Oracle. Apenas pode ser utilizada nas versões 12c e posteriores.

No XE, podemos utilizar o FETCH FIRST N ROWS ONLY para receber apenas as primeiras linhas de uma consulta.

Espero ter ajudado. Bons estudos!