ROWNUM do Oracle 07/27/2008
 

Dica rápida: ao contrário do que muita gente imagina, a cláusula rownum do oracle - geralmente utilizada para limitar a quantidade de registros que uma query pode trazer - não funciona corretamente caso você considere a hipótese de que o atributo ROWNUM é uma propriedade da tabela.

Para ficar mais fácil o entendimento, imagine a seguinte query:

select * from <tabela> where ROWNUM > 1;

Caso você execute essa query, verá que registro nenhum será trazido; isso porque, a pseudo coluna ROWNUM somente passa a existir, depois do resultSet retornar do banco; neste caso, se a a intenção é limitar os itens de um determinado select, considerando algum tipo de ordenação a forma correta do select acima seria, no caso de limitar os resultados em apenas 5 itens seria este:

select *from (select * from <tabela> order by sal desc) where ROWNUM <= 5;

Como se pode ver, primeiro é necessário trazer os registro do banco (obter o resultsSet), para que  depois disso, se possa limitar a quantidade de linhas, através do ROWNUM.

Uma ótima documentação para aprofundar o entendimento desse e de outros tipos de abordagens do ROWNUM, você pode conferir em: http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html

 


Comments




Leave a Reply

Name (required)
Email (not published)
Website


 

    Sobre o autor

    Rafael Silva, atua na área web há mais de cinco anos, prestando serviços de consultoria e treinamento em diversas empresas, sendo especialista na plataforma ColdFusion/JRun. Também possui experiência no desenvolvimento web com PHP, extJS e Flex.

    View Rafael Silva's profile on LinkedIn

    Arquivos

    October 2008
    September 2008
    August 2008
    July 2008