[firebase-br] Cursor

paulosxs Yahoo! paulosxs em yahoo.com.br
Qui Ago 30 18:03:17 -03 2007


Edson, tanto o Oracle quanto o MS SQL possuem essa capacidade. No 
entanto, apesar da flexibilidade, isso não é uma prática recomendada no 
desenvolvimento de um sistema bem estruturado. Mesmo matematicamente, 
considerando o conceito de função, no qual essas procedures se 
enquadram, é abominável. Claro que quem decide é o desenvolvedor, mas, 
por uma questão de boas práticas, recomendo padronizar a estrutura de 
retorno ou criar uma procedure para cada estrutura de retorno.


Edson de Paulo escreveu:
> 	Pessoal tenho uma procedure que irá retornar um determinado select de 
> acordo com os parâmetros que passei, os resultado de saída pode variar, 
> com um select pode retornar Param1, Param2, Param3, com outro select 
> pode retornar Param1 e outro retornar Param2 e Param3, ou seja o 
> resultado é dinâmico, tem como criar essa procedure sem ter que fixar os 
> parâmetros de retorno. Por exemplo no oracle eu faria da seguinte maneira.
>
> CREATE PROCEDURE prcTeste(Retorno OUT IS REF CURSOR, pTipo VARCHAR)
> AS
> BEGIN
>    IF pTipo = 'S' THEN
>      OPEN retorno FOR
>        SELECT campo1, campo2, Campo3
>        FROM tabela;
>    ELSE
>      OPEN retorno FOR
>        SELECT campo1
>        FROM tabela;
>    END IF;
> END;
>
> E dependendo do meu parâmetro pTipo ele irá retornar um cursor com 3 ou 
> com 1 campo apenas.
>
> Espero ter sido claro na pergunta, se alguém puder me dar uma dica.
>
> Obrigado
>
>   





Mais detalhes sobre a lista de discussão lista