none
if em uma stored procedure RRS feed

  • Pergunta

  • Pessoal é o seguinte, estou refazendo o sistema da minha empresa, pois estava impossível de trabalhar com ele, mas me deparei com um problema...

    a linguagem que utilizo e o VB6 e SQL 2005...
    no vb 6 eu posso chamar uma funcao passando os parametro ou não, mas para isso preciso crar uma função desse jeito:

    Public Function Exemplo(optional variavel as string = "") as string
          'aqui eu escreveria o meu código
    end function
    estou precisando fazer isso em uma stored procedure, pois neste novo sistema precisarei passar mais um parametro para me trazer o retorno correto, mas no do sistema antigo, que ainda está sendo utilizado até eu entregar este novo sistema, não pode ter existir esta variável.


    se caso isso não for possível, então existe alguma maneira de colocar um if ou um case nesta stored procedure para que se ele passar os valores 1 ou 0 executasse uma clausula, se caso for outro falor não executaria esta clausula.
    Exemplo:

    SELECT * FROM Clientes
    where 1 = 1
    if (@variavel = 1) OR (@variavel = 0)
       and codCliente = @variavel


    Alquém tem alguma sugestão para me dar?

    segunda-feira, 28 de maio de 2012 13:12

Respostas

  • Olá,

           Uma das soluções possíveis é a utilização dos parametros default onde você pode determinar um valor default para determinado parametro.

           Segue um exemplo onde qualquer um dos parametros pode ser NULL. No caso dele ser nulo, o SQL irá ignorar o parametro na sua cláusula WHERE:

    create proc usp_Dados 
      @Param1 varchar(10) = NULL,
      @Param2 Varchar(10) = NULL 
    as
    begin
       select campos 
         from tabela
        where (campo1 = @Param1 or @Param1 is null) and
              (Campo2 = @PAram2 or @PAram2 is NULL)
    end


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Sugerido como Resposta Antero Marques segunda-feira, 28 de maio de 2012 14:09
    • Marcado como Resposta Harley Araujo quarta-feira, 30 de maio de 2012 13:36
    segunda-feira, 28 de maio de 2012 13:18
    Moderador