12c – SQL Query Row Limits and Offsets
No Oracle Database 12c, foi introduzida a row_limiting_clause no comando Select. Esta nova cláusula limita o número de registros retornados em um Select de forma mais efetiva do que as releases anteriores do banco de dados Oracle.
Os novos keywords OFFSET e FETCH fornecem o padrão ANSI SQL para limitar o número de linhas retornadas e para especificar uma linha de partida para o conjunto de retorno.
SQL>create table tabela_teste (codigo number, nome varchar2(20));
Table created. insert into tabela_teste values (1,'Alex'); insert into tabela_teste values (2,'Joao'); insert into tabela_teste values (3,'Maria'); insert into tabela_teste values (4,'Pedro'); insert into tabela_teste values (5,'Paulo'); insert into tabela_teste values (6,'Fernando'); insert into tabela_teste values (7,'Rafael'); insert into tabela_teste values (8,'Samuel'); insert into tabela_teste values (9,'Daniel'); insert into tabela_teste values (10,'Luciano'); commit; Commit complete. SQL> select * from tabela_teste order by codigo desc fetch first 5 rows only; CODIGO NOME ---------- -------------------- 10 Luciano 9 Daniel 8 Samuel 7 Rafael 6 Fernando SQL> select * from tabela_teste order by codigo desc offset 4 rows fetch next 4 rows only; CODIGO NOME ---------- -------------------- 6 Fernando 5 Paulo 4 Pedro 3 Maria SQL> select * from tabela_teste order by codigo desc fetch first 20 percent rows only; CODIGO NOME ---------- -------------------- 10 Luciano 9 Daniel
Referências
http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_10002.htm#SQLRF55636
Abraço
Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 15 anos, é ORACLE ACE Director, certificado OCM Database 11G / Cloud e conta com mais de 140 outras certificações em produtos da Oracle. Alex também é um dos fundadores do Grupo de Usuários Oracle de Angola (GUOA), participa do Grupo de Usuários de Tecnologia Oracle Brasil (GUOB) e é membro do time OraWorld.