[firebase-br] Procedure com WHERE dinâmico

bvrenato bvrenato em click21.com.br
Sex Set 11 09:47:48 -03 2009


Bom dia colegas..

Estou precisando implementar uma SP onde a cláusula WHERE seja montada
dinâmicamente conforme os parâmetros que forem passados pela aplicação.

A idéia é a seguinte:
Tenho uma tabela TPROCESSOS, contendo os campos:
dtregistro,
dtliberacao,
dtvistoria,
dtprotocolo,
dtlancamento,
parametro (valores: P1-Em Analise, P2-Liberados, P3-Bloqueado),
...

Na minha aplicação eu passo os seguintes parâmetros para a SP):

a) O tipo de ocorrência que desejo (O1-Registro, O2-Liberação, O3-Vistoria,
...). Aqui é passado o valor do ItemIndex do radioGroup como parâmetro;

b) O intervalo de data (De... Até...). Este é o intervalo de data de registro da
Ocorrência (item a). Aqui são passados os valores de mskInicio e mskTermino
(ambos maskEdit) como parâmetro para a SP;


c) A parametrização dos registro que desejo (Z1-Todos os processos, Z2-Somente
Registrados, Z3-Os Registrados e Vistoriados, Z4-Os Vistoriados e Não
Liberados, Z5-...). Aqui é passado o valor do ItemIndex do radioGroup como
parâmetro;

OBS: Podem haver processos que foram Registrados e ainda nao Liberados, ou ainda
nao Analisados, etc. Oq vai me indicar estes casos será a existencia, ou não, de
uma data no respectivo campo.

Estou montando a cláusula WHERE dentro da SP conforme os parâmetros passados,
porém minha dificuldade está na montagem do WHERE, uma vez que o cruzamento dos
parâmetros PX com ZX apresentam-se, de certa forma, como um plano cartesiano
onde todas as combinações são possíveis.
Preciso, então, saber como montar esta estrutura WHERE dentro da SP.

Eu criei uma variável varchar na cláusula AS, montei a instrução para o WHERE
nessa variável mas não funcionou.
Dei uma olhada na instrução EXECUTE BLOCK, mas pelo que entendi ele não se
aplica ao meu caso.

Alguém poderia me dar uma luz ? Estou agarrado no meu projeto por causa disso.

Grato

Renato Vasconcellos


___________________________________________________________________________________
Para fazer uma ligação DDD pra perto ou pra longe, faz um 21. A Embratel tem
tarifas muito baratas esperando por você. Aproveite!





Mais detalhes sobre a lista de discussão lista