Registrado em: Dec 02, 2008 Mensagens: 56 Localização: São Paulo /SP
Enviada: 13 Fev 2012 15:19 Assunto: Consulta SQL com WHERE definido pelo parametro
Boa tarde, galera
To rachando a cabeça numa consulta e não consigo resolver.
Meu problema é que, quando a proc receber um parametro que não seja NULL, esta consulta deverá respeitar minhas condições e acrescentar uma linha no resultado, já que este parâmetro é chave de uma tabela.
Registrado em: Sep 12, 2005 Mensagens: 718 Localização: São José ods Campos/SP
Enviada: 14 Fev 2012 09:28 Assunto:
Rafaselic
Voce precisa criar uma query dinamica e executa-la com sp_ e x e c u t e s q l. Não faça a besteira de usar na clausula W H E R E o teste da variável com valor NULO. Exemplos:
Dinamica
Código:
d e c l a re @sql n v a r c h a r (XXX)
--aqui voce começa a aarmazenar o seu comando em uma variável
s e t @sql = 's e l e c t ......'
..
..
..
..
-- começando ou complementando o filtro, vc valida a sua variável
if @ v a r i a v e l is not null
set @ sql = @sql + 'w h e r e campo = ' +@ variavel
ou
set @ sql = @ sql + 'a n d campo =' + @ variavel
-- depois de tudo pronto, voce executa a query armazenada em @ sql
e x e c s p_ e x e c u t e s q l @ sql
Maneira errada porém muitos fazem
Código:
w h e r e campo = @ variavel or @ variavel is n u l l
ou
a n d campo = @ variavel or @ variavel is n u l l
A 2a maneira ode causar parameter snifing por isso deve ser evitada.