none
where + if RRS feed

  • Pergunta

  • Estou criando um sp, onde na minha clausula WHERE eu preciso condicionar uma coluna específica entre 2 opções de várias linhas:

    id - descricao

    1 - Cadastramento

    2 - Análise

    3 - Negado

    4 - Aceito

     

    Por exemplo, eu quero limitar minha procedure para pegar somente os Negados, ou somente os Aceitos ou os 2 (caso o parametro seja NULL, deve pegar os 2)

    Tentei usar IF...ELSE, mas não consegui. Alguém tem alguma sugestão para meu problema??

    sexta-feira, 16 de fevereiro de 2007 12:07

Todas as Respostas

  •  

       use um case

        Select ...

        From tabela

        where campo = case wen @variavel = 1 then 'aceitos' when @variavel = 2 then 'negados' else campo end

    Abs;

    sexta-feira, 16 de fevereiro de 2007 12:11
  • Pedro,

    O Case, também é uma boa alternativa para se utilizada, ele também apresenta o Else.

    sexta-feira, 16 de fevereiro de 2007 16:11
  • Dá pra usar IF sim.... Neste exemplo, se o parâmetro valer NULL ou se for omitido, a proc retorna os Aceitos e os Negados. Se o valor do parâmetro não for nenhum dos 3 previstos ('Aceito', 'Negado' e NULL), a proc não retorna nada, mas se vc quiser que ela retorne a tabela em branco, você poder adicionar um ultimo ELSE que execute SELECT TOP 0 * FROM TABELA....

    falow!

    CREATE PROCEDURE SP (
    @OPCAO VARCHAR(10) = NULL
    )

    AS BEGIN

        IF @OPCAO = 'Aceito'
            BEGIN
                SELECT * FROM TABELA WHERE ID = 4
            END
        ELSE IF @OPCAO = 'Negado'
            BEGIN
                SELECT * FROM TABELA WHERE ID = 3           
            END
        ELSE IF @OPCAO IS NULL
            BEGIN
                SELECT * FROM TABELA WHERE ID = 3 OR ID = 4            
            END

        RETURN

    END

    quinta-feira, 22 de fevereiro de 2007 16:43