/ / if-else condição para atualizar uma tabela em um procedimento armazenado no SQL Server 2005 - sql, sql-server, stored-procedures, sql-server-2005

if-else condição para atualizar uma tabela em um procedimento armazenado no SQL Server 2005 - sql, sql-server, stored-procedures, sql-server-2005

Eu quero atualizar alguns dados em um caso especificado, senão essas colunas não devem ser atualizadas.

O que posso escrever código em um procedimento armazenado para isso?

Respostas:

9 para resposta № 1

Você pode usar um case para controlar se você atribui um novo valor ou mantém o valor antigo.

update <sometable>
set field = case when <condition> then <newvalue> else field end
where <condition>

Exemplo:

update questions
set reply = case when @input is not null then @input else reply end
where answer = 42

6 para resposta № 2

Use a instrução Case na cláusula Update

gostar

Instrução SQL # 6

UPDATE titles
SET price =
CASE
WHEN (price < 5.0 AND ytd_sales > 999.99)
THEN price * 1.25
WHEN (price < 5.0 AND ytd_sales < 1000.00)
THEN price * 1.15
WHEN (price > 4.99 AND ytd_sales > 999.99)
THEN price * 1.2
ELSE price
END

Tirado de ATUALIZAÇÃO DO SERVIDOR SQL

Além disso, você pode ir com a declaração if..else

Se você estivesse no SQL SERVER 2008, poderia ter o sabor da instrução MERGE.


3 para resposta № 3

Apenas um exemplo:

IF @a <= 0
BEGIN
UPDATE table SET counter = @a, name = "Minati"
END
ELSE
BEGIN
UPDATE table SET name = "Minati"
END

3 para resposta № 4

Pode ser que você possa construir a condição na atualizaçãocomando e facilmente executar mais de uma atualização com as diferentes condições. Pode não ser a maneira mais elegante, mas é bastante eficiente. Depende das suas necessidades.

UPDATE table SET field=value WHERE <<condition>>
UPDATE table SET field=value2 WHERE <<condition2>>