GARANTIR DESCONTO

Fórum Order by variável em Stored Procedure #58279

06/05/2007

0

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


Scd

Scd

Responder

Posts

07/05/2007

Sremulador

amigo, não vejo o porque fazer uma ordem dentro de uma sp, você deve fazer na saída...


Responder

Gostei + 0

07/05/2007

Gandalf.nho

Se você realmente tem que fazer o ORDER BY variável no corpo da SP, o único jeito seria usar EXECUTE STATEMENT.


Responder

Gostei + 0

31/07/2007

Murilo-jau

faça dentro do Delphi . Foi o unico meio que encontrei


Responder

Gostei + 0

31/07/2007

Emerson Nascimento

estou com o [b:b7de9ecb56]sremulador[/b:b7de9ecb56]: ordene na saída.

por exemplo:

select *
from sua_stored_procedure( data_inicial, data_final, status )
order by campo_desejado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar