Ir para conteúdo
Fórum Script Brasil
  • 0

Exemplo de WHERE dinâmico, Sem utilização de EXEC ou CASE


jothaz

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...