[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