none
Update em alguns campos RRS feed

  • Pergunta

  • Pessoal,

    Eu tenho um metodo que chama uma sp de update sql.

    Acontece que dependendo das minhas condicoes, eu irei fazer um update cada vez em um campo diferente.
    Mas eu nao quero ter um metodo diferente para cada campo.

    Ex:

    Update(esse campo muda, esse campo nao muda, esse campo nao muda, esse campo muda);
    Na proxima vez, farei:
    Update(esse campo nao muda, esse campo nao muda, esse campo nao muda, esse campo  muda);

    Entao ao inves de ter varias assinaturas do mesmo metodo, existe uma forma de no SQL eu ignorar alguns campos ?
    Ex: Update set campo1=MantemValor, campo2=novoValor, campo3=MantemValor, campo4=mantemValor) 

    sexta-feira, 19 de outubro de 2012 06:16

Respostas

  • Neto,

    Existe uma solução que consiste em criar um procedure cujos seus parâmetros já estão inicializados com NULL. Quando atribuir o valor no campo usaremos a função ISNULL para validar se o parâmetro é nulo, caso ele seja ao invés de usar o valor do parâmetro será usado o próprio valor da coluna. Exemplo:

    CREATE PROCEDURE UPDATETABELA

    (

      @NOME VARCHAR(50) =NULL

    )

    AS

    BEGIN

      UPDATE TABELA SET NOME = ISNULL(@NOME,NOME) WHERE ID =1

    END

    O seu uso é simples, veja:

    EXEC UPDATETABELA --Será mantido o mesmo valor na coluna

    EXEC UPDATABELA 'VITOR' --Valor da coluna atualizado para VITOR


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Editado Vitor Mendes sexta-feira, 19 de outubro de 2012 11:57
    • Sugerido como Resposta Bruno VD Ribeiro sexta-feira, 19 de outubro de 2012 17:06
    • Marcado como Resposta AGA Neto domingo, 21 de outubro de 2012 04:31
    sexta-feira, 19 de outubro de 2012 11:56