Função row_number

Versão para impressãoEnviar para amigoVersão PDF

O Informix atualmente ainda carece de algumas funções compatíveis com outros banco de dados, uma delas é a ROW_NUMBER (SqlServer, Oracle).

Aqui demonstro uma alternativa similar, pouco mais limitada , mas que provavelmente irá atender 80% das necessidades.

create procedure row_number(initial integer) returning integer as row_number;
define global i integer default 0;
  if initial = 0 then
    let i = 0;
    return 0 ;
  end if;
  let i = i+1;
   return i ;
end procedure
document "Simplified and similar function to row_number() from SqlServer.",
"Need to reset the counter before each sql statement with ",
"execute procedure row_number(0) OR declare into FROM clause",
"For use in SELECT statement use any other number in parameter:",
"select row_number(1) , tabname from systables;",
"OR select row_number(1) , tabname from systables, table(row_number(0))",
"By Cesar Inacio Martins - www.imartins.com.br"
with listing in "/tmp/row_number.out"
;
Routine created.
;

# Aqui a sintaxe de chamada deverá ser sempre a mesma, row_number(1) para 
# o campo e table(row_number(0)) para a tabela
select  first 5 row_number(1), tabname::char(20) 
from systables, table(row_number(0));

(expression) (expression)         
           1 systables           
           2 syscolumns          
           3 sysindices          
           4 systabauth          
           5 syscolauth          
5 row(s) retrieved.

select  first 5 row_number(1), tabname::char(20) 
from systables, table(row_number(0))
order by 1 desc;

(expression) (expression)         
         245  SMIVERSION         
         244 sysextspaces        
         243 syscompdicts        
         242 syscmsm             
         241 syssqexplain        
5 row(s) retrieved.

5
Média: 5 (1 vote)
Sua avaliação: Nenhum
Tags:

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.