Em 29 de dezembro de 2011 10:52, Jairo <[email protected]> escreveu:
> Pessoal por gentileza uma ajuda com select com order by e case****
>
> ** **
>
> Estou tentando utilizar em uma Function um order by usando case conforme
> abaixo ****
>
> Porem não estou conseguindo utilizar o Desc ou Asc.****
>
> Observação Se não utiliza-lo funciona perfeitamente****
>
> ** **
>
> <corte>
>
>
Eu utilizaria um SQL Dinâmico [1] [2], como por exemplo:
CREATE OR REPLACE FUNCTION vrj.pkg_teste
(
--- PARÂMETROS
--- I/O NOME TIPO
--- *** ******************************
*************************************************
refcursor,
IN p_ordem VARCHAR(1)
)
RETURNS refcursor AS
$BODY$
DECLARE
strSQL TEXT;
BEGIN
strSQL := '
SELECT
pvd.id_pedido_venda,
pvd.cd_cliente,
pvd.nr_pedido
FROM
vrj.tb_pedido_venda AS pvd
ORDER BY ';
IF UPPER(p_ordem) = 'C' THEN
strSQL := strSQL || 'pvd.cd_cliente ASC , pvd.nr_pedido ASC';
ELSE
strSQL := strSQL || 'pvd.nr_pedido DESC, pvd.cd_cliente ASC';
END IF;
OPEN $1 FOR EXECUTE strSQL;
RETURN $1;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
SELECT vrj.pkg_teste('dados','D');
FETCH ALL In dados;
Não testei, mas é bem provável que funcione.
[1]
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
[2] http://www.postgresql.org/docs/current/interactive/plpgsql-cursors.html
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral