if dentro da pesquisa

Firebird

06/02/2006

Bem galera e o seguinte estou fazendo um procedure at ae td ok porem tenho que verificar se tem um determinado parametro ex

procedure....

...
..
select ....
queri colocar aqui
if paret=1 then
where else
where...

pois hoje tenho que criar varias procedures para isso e nao consigo reaproveita...

helpppppppppp...........


Sremulador

Sremulador

Curtidas 0

Respostas

Sremulador

Sremulador

06/02/2006

help...


GOSTEI 0
Romulocpd

Romulocpd

06/02/2006

Acho que no FB 2.0 vai dar para colocar valor default para os parametros.

Dai eu faria assim:

CREATE PROCEDURE SP_TESTE (PCODIGO: INTEGER, PNOME: VARCHAR(30), PTELEFONE: VARCHAR(30) = ´SEM TELEFONE´)

Dai internamente vc poderia verificar. Eu fiz mesclando FB com SQL Server, mas a idéia é esta. No meu caso digamos que tenho uma stored para cadastrar produto. Se o parametro PFORNECEDOR vier zero entao sei que nao foi passado o fornecedor


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/02/2006

não dá pra fazer algo assim?
select
  ....
from
  ....
where
  (paret = 1 and CONDICOES PARA ESSE CASO)
  or
  (paret <> 1 and CONDICOES PARA ESSE OUTRO CASO)



GOSTEI 0
Sremulador

Sremulador

06/02/2006

nao consigo desta maneira, ja tentei de tudo, e muito complicado...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/02/2006

nos dê um exemplo mais preciso.


GOSTEI 0
Sremulador

Sremulador

06/02/2006

tipo assim se o parametro = 1 entao ele processa o cod com um tipo de where caso outro where seja avaliado... isso dentro de um select...


GOSTEI 0
Rodolpho123

Rodolpho123

06/02/2006

Vc não pode reescrever o seu select? Ex: se Param = 1 then [b:da7c66b0db]select where 1[/b:da7c66b0db], else [b:da7c66b0db]select where 2[/b:da7c66b0db]?


GOSTEI 0
Sremulador

Sremulador

06/02/2006

hoje eu utilizo desta maneira porem a procedure fica gigante eu quero minimizar isso...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/02/2006

você pode fazer uso de [b:c4e43d15e9]execute statement[/b:c4e43d15e9] (FB 1.5) ou fazer da forma que eu havia mostrado antes...


GOSTEI 0
POSTAR