Recuperando o próximo registro no Oracle PL/SQL

[ad#texto]

Já falamos sobre o comando LAG do PL/SQL, agora e se precisássemos utilizar os valores do próximo registro de uma instrução SELECT?

Semelhante ao LAG temos a função analítica LEAD no Oracle PL/SQL que tem a função de retornar o registro anterior sem precisarmos reprocessar tudo novamente. Veja a sintaxe:

lead ( expression [, offset [, default] ] )
over ( [ query_partition_clause ] order_by_clause )

Veja um exemplo:

select product_id, order_date,
lead (order_date,1) over (ORDER BY order_date) AS next_order_date
from orders;

PRODUCT_ID    ORDER_DATE    NEXT_ORDER_DATE
1000        25/09/2007         26/09/2007
2000        26/09/2007         27/09/2007
1000        27/09/2007         28/09/2007
2000        28/09/2007         29/09/2007
2000        29/09/2007         30/09/2007
1000        30/09/2007         <NULL>

O uso do LEAD é bem simples, assim como o LAG, agora é fácil trabalhar tanto o registro anterior como o próximo registro de um SELECT, bem útil quando vamos gerar arquivos texto utilizando quebras pela iteração dos registros.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.