[firebase-br] Ajuda Stored Procedure

Sandro Souza escovadordebits em gmail.com
Ter Jul 12 13:30:09 -03 2016


Bom dia/tarde/noite Adilson.

Talvez o que você queira seja algo parecido com isso aqui:

FOR SELECT CAMPOX, CAMPOY, CAMPOZ
       FROM TABELA
       WHERE ((:PARAMETRO_1 = 0) OR ((:PARAMETRO_1 <> 0) AND (CAMPOX =
:PARAMETRO_1)) AND
                    ((:PARAMETRO_2 = 0) OR ((:PARAMETRO_2 <> 0) AND (CAMPOY
= :PARAMETRO_2)) AND
                    ((:PARAMETRO_3 = 0) OR ((:PARAMETRO_3 <> 0) AND (CAMPOZ
= :PARAMETRO_3))
       INTO :VAR1, :VAR2. :VAR3 DO
       BEGIN
           ...
       END

Espero ter ajudado mais que atrapalhado. :D

Em 12 de julho de 2016 00:35, Adilson B. Cápua Jr. <juniorcapua em gmail.com>
escreveu:

> PessoALL,
>
> Veja o seguinte trecho de uma SP:
>
>         FOR SELECT CAMPOX, CAMPOY, CAMPOZ
>             FROM TABELA
>             WHERE
>                   CAMPOX = :PARAMETRO_1 AND
>                   CAMPOY = :PARAMETRO_2 AND
>                   CAMPOZ = :PARAMETRO_3
>             INTO :VAR1, :VAR2. :VAR3 DO
>             BEGIN
>                        ...
>             END
>
> Agora imagine que PARAMETRO_1, PARAMETRO_2 e PARAMETRO_3 é opcional, ou
> seja,
> se vier diferente de 0, significa que tenho que usá-lo, caso contrário não!
>
> Como fazer isso de uma forma "elegante"?
>
> Hoje eu tenho que repetir várias vezes de acordo com o parâmetro. Tipo
> assim:
>
> IF (PARAMETRO_1 = 0) THEN
> BEGIN
>   IF (PARAMETRO_2 = 0) THEN
>    BEGIN
>       IF (PARAMETRO_3 = 0) THEN
>        BEGIN
>            (((QUERY DESCARTANDO TODOS PARAMETROS)))
>        END
>
>     IF (PARAMETRO_3 <> 0) THEN
>        BEGIN
>            (((QUERY USANDO SOMENTE PARAMETRO_3)))
>        END
>    END
> END
>
> Minhas SP's estão ficando gigantescas! Se fosse dentro do meu programa, era
> mole. Eu ia montando a query de acordo com a consulta. Agora dentro de
> Storeds Procedures que estou meio que perdido!
>
> Qualquer ajuda é bem vinda!
>
> Ah... Usando Firebird 2.5!
>
> Um abraço!
>
> _____________________________________
>   Adilson Bragança Cápua Jr.
>   Linhares - ES                            Brasil
>
>   Mail:* juniorcapua em me.com <juniorcapua em me.com>*
> *          juniorcapua em gmail.com <juniorcapua em gmail.com>*
> *          juniorcapua em yahoo.com.br <juniorcapua em yahoo.com.br>*
>   Messenger:* juniorcapua em live.com <juniorcapua em live.com>*
>   Skype:* dellas_capua*
>   Blogger: http://dellasnoites.blogspot.com/
> _____________________________________
> "Save a tree! Send an e-mail!"
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista