Fórum quot;Casequot; dentro da cláusula quot;Wherequot;? #49654
28/02/2005
0
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:
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é!
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
Curtir tópico
+ 0
Responder
Posts
28/02/2005
Gandalf.nho
Como é FB 1.5 você poderia usar EXECUTE STATEMENT
Responder
Gostei + 0
28/02/2005
Beppe
Vc nem precisa usar IF´s só incluir os testes no WHERE:
Só lembre de definir o parâmetro [i:7b897be0d9]Código[/i:7b897be0d9] antes.
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)