quot;Casequot; dentro da cláusula quot;Wherequot;?

Firebird

28/02/2005

Olá!

Fiz uma stored procedure no meu banco (FB 1.5). O problema é que dependendo do parâmetro que o usuário passar eu queria mudar a cláusula where do Select principal da Stored.

Se fosse no Delphi eu faria assim:

...
SQL.Add(´SELECT T1.*,T2.NOME FROM NOTASM T1´);
SQL.Add(´JOIN FORNECEDORES T2 ON´);
SQL.Add(´ON T1.CODFORNECEDOR=T2.CODFORNECEDOR´);
//Abaixo é o que eu queria fazer direto na stored
case Codigo of
0:SQL.Add(´T1.DATA=:DAT´);
1:SQL.Add(´T1.VALOR>:VAL´);
//etc...
end;
ExecQuery;


No meu caso, na stored eu tive que fazer no início dela vários ´IF´s´ testando o valor do parâmetro e dentro de cada bloco eu tive que colocar toda a SQL. Acredito que deva haver um modo mais fácil e/ou mais correto de se fazer algo com esse mesmo efeito.

Até!


Delphi32

Delphi32

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

28/02/2005

Como é FB 1.5 você poderia usar EXECUTE STATEMENT


GOSTEI 0
Beppe

Beppe

28/02/2005

Vc nem precisa usar IF´s só incluir os testes no WHERE:

WHERE (:Codigo = 0 and T1.DATA=:DAT) or (:Codigo = 1 and T1.VALOR>:VAL)


Só lembre de definir o parâmetro [i:7b897be0d9]Código[/i:7b897be0d9] antes.


GOSTEI 0
POSTAR