[firebase-br] Order by vari?vel em SP

Denis denisrocha em hotmail.com
Seg Maio 7 10:04:34 -03 2007


use o execute statement.

Por exemplo
   ....
   Sql = 'Select * from suatabela order by' || :seuparametro;
   execute statement Sql;





"Rider of the storm" <sidoncd em gmail.com> 
escreveu na mensagem news:f1l10d$d0f$3 em sea.gmane.org...
> Estou desenvolvendo ums stored procedure onde a coluna para order by 
> deverá ser passada via parametro, FB parece não aceitar assim:
>
> order by <variável>
>
> Como sei que é possível ordenar pelo numero da coluna, como abaixo:
>
> order by 2
>
> Tentei criar uma variavel inteira onde seu valor é o numero da coluna que 
> o usuario deseja ordenar, order by ficou assim:
>
> order by :posicao
>
> Beleza, não ocorre erro, mas.. não funfa, alguem tem a solução para isto?
>
> Abaixo vai a procedure real:
>
> begin
>
>  posicao = case ordem
>    when 'numnf' then 2
>    when 'emissao_nf' then 3
>    when 'cliente' then 4
>  end;
>
>  for
>    select
>      rv.codigo_cliente,
>      rv.numnf,
>      rv.emissao_nf,
>      cl.identificacao,
>      rv.status,
>      sum(total_icms) as total_icms,
>      sum(total_nf) as total_nf,
>      sum(ipi) as ipi,
>      sum(comissao) as comissao,
>      sum(total_iss) as total_iss
>    from
>      resumovendas rv left outer join clientes cl on
>                            rv.codigo_cliente = cl.codigo_cliente
>
>    where
>      (rv.emissao_nf between :data_inicial and :data_final)
>      and
>      (rv.status=coalesce(:filtro_status,rv.status))
>
>    group by
>      rv.codigo_cliente,
>      rv.numnf,
>      rv.emissao_nf,
>      cl.identificacao,
>      rv.status
>
>     order by :posicao
>
>     /*  => Também não funciona
>     order by (case ordem
>       when 'numnf' then 2
>       when 'emissao_nf' then 3
>       when 'cliente' then 4
>     end)
>     */
>
>    into
>      :codigo_cliente,
>      :num_nf,
>      :emissao_nf,
>      :razao_cliente,
>      :status,
>      :total_icms,
>      :total_nf,
>      :total_ipi,
>      :total_comissao,
>      :total_iss
>
>    do
>    begin
>      suspend;
>    end
>    begin
>      total_icms = posicao;
>      suspend;
>    end
> end
>
>
>
>


--------------------------------------------------------------------------------


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 







Mais detalhes sobre a lista de discussão lista