En “Oracle Database 12c los mecanismos para limitar cantidad y modo de extracción de registros han tenido una mejora significativa, proveyéndonos de nuevas clausulas.

Podemos especificar la cantidad de registros a ser retornados utilizando las palabras claves: “FETCH”,”FIRST”,”NEXT”. También podemos especificar la cantidad de registros a ser retornados con la clausula “PERCENT”.

Con la clausula “OFFSET” podemos especificar la cantidad de registros deseados a partir del primer registro de un set de resultados complemento a la data que ya se ha obtenido.

Las consultas que generalmente utilizan este tipo de clausulas son conocidas como: “Top-N Queries”. Veamos un ejemplo práctico de esta característica:

create table nums as
select level as num from dual
connect by level <= 100;
-- Table created.
select count(1) as cnt from nums;
-- CNT
-- ------------
-- 100
select num from nums
order by 1 desc
fetch first 10 rows only;
-- NUM
-- ------------
-- 100
-- 99
-- 98
-- 97
-- 96
-- 95
-- 94
-- 93
-- 92
-- 91
select num from nums
order by 1
fetch first 12 percent rows only;
-- NUM
-- ------------
-- 1
-- 2
-- 3
-- 4
-- 5
-- 6
-- 7
-- 8
-- 9
-- 10
-- 11
-- 12
select num from nums
order by 1
offset 4 rows fetch next 6 rows only;
-- NUM
-- ------------
-- 5
-- 6
-- 7
-- 8
-- 9
-- 10
select num from nums
order by 1
offset 2 rows fetch next 15 percent rows only;
-- NUM
-- ------------
-- 3
-- 4
-- 5
-- 6
-- 7
-- 8
-- 9
-- 10
-- 11
-- 12
-- 13
-- 14
-- 15
-- 16
insert into nums select * from nums;
-- 10 rows inserted
commit;
select count(1) as cnt from nums;
-- CNT
-- ----------
-- 200
select num from nums
order by 1 desc
fetch first 7 rows with ties;
-- NUM
-- ------------
-- 100
-- 100
-- 99
-- 99
-- 98
-- 98
-- 97
-- 97

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *