[firebase-br] Order by vari?vel em SP
Rider of the storm
sidoncd em gmail.com
Dom Maio 6 13:51:08 -03 2007
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
Mais detalhes sobre a lista de discussão lista