Оператор Case в SQL Server 2005 - PullRequest
4 голосов
/ 04 ноября 2010

Я не уверен, что использовать в этом сценарии, но я думаю, что оператор Case подходит.

Однако я не знаю синтаксис.Может кто-нибудь подсказать мне?

У меня есть переменная с именем @Action, которая может иметь около 30 различных значений.

Я хочу сделать что-то подобное

 CASE
 WHEN @Action = 'InsertTbl1' THEN 
  BEGIN
   -- Some Insert statements and one update statements
  END
 WHEN @Action = 'RecalculateCol3' THEN 
  BEGIN
   -- Some update statements
  END
 WHEN @Action = 'Closed' THEN 
  BEGIN
   -- Some delete statements and some update statements

  END
--- and so on.....
 ELSE 
  BEGIN
  END
 END

Ответы [ 2 ]

4 голосов
/ 04 ноября 2010

Предложите структуру IF и ELSE IF для имитации переключателя.

IF @MyVar = 'Foo'
BEGIN
    --react to Foo        
END

ELSE IF @MyVar = 'Bar'
BEGIN
    --react to Bar       
END
ELSE
BEGIN
    --default case.
END
0 голосов
/ 04 ноября 2010

Да, вы можете использовать Else If.Например:

declare @temp int
set @temp = 3

if @temp = 1
    print '1'
else if @temp > 1 and @temp < 3
    print '2'
else if @temp >= 3
    print '3'

Я бы все же подумал о том, чтобы разбить его на отдельные процедуры, как предлагали другие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...