Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jothaz

[Resolvido] Exemplo de WHERE dinâmico

Recommended Posts

Camaradas,

 

Exemplo de WHERE dinâmico - sem utilização de EXEC ou CASE

 

A stored procedure a seguir efetua uma consulta em uma tabela de CLIENTES utilizando como critério os

campos: UF, CIDADE e BAIRRO.

 

A particularidade desta stored procedure é que ele é capaz efetuar a consulta de maneira dinâmica.

 

Ou seja a stored procedure receberá:

[*]3 parâmetros

EXEMPLO_WHERE_DINAMICO('UF','CIDADE','BAIRRO')

[*]2 parâmetros

EXEMPLO_WHERE_DINAMICO('UF','CIDADE')

[*]1 parâmetro

EXEMPLO_WHERE_DINAMICO('UF')

[*]NENHUM parâmetro

EXEMPLO_WHERE_DINAMICO()

E efetuará o filtro (WHERE) dinamicamente.

 

Segue código da stored procedure:

----- INICIO DA PROCEDURE -----------------------------------------------------------------------------------CREATE PROC EXEMPLO_WHERE_DINAMICO(	@UF		  CHAR(2)  = NULL,	@CIDADE	  VARCHAR(30)  = NULL,	@BAIRRO	  VARCHAR(30)  = NULL)AS  	SELECT  *	FROM	CLIENTES	WHERE	  -- FILTROS OPCIONAIS ----------------------------------------------------------------------------------------			(@UF		IS NULL OR UFA		= @UF)		AND			(@CIDADE	IS NULL OR CIDADE   = @CIDADE) 	AND			(@BAIRRO	IS NULL OR BAIRRO   = @BAIRRO)		ORDER BY UF,CIDADE,BAIRRO
Considerações finais:

 

É sempre aconselhavel ser prudente no uso do OR pois normalmente afeta a performance.

Alguns DBA´s consideram até uma heresia o seu uso! :o)

Analise o plano de execução para avaliar como a expressão esta sendo processada. Por

ele é possivél perceber o gargalos na execução de sua expressão.

 

Fonte/Autor/link

AUTOR: "Jothaz" e "Bruno"

 

 

Dúvidas, criticas, contribuições, correções e adições serão bem vindas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.