Положение SQL Server - PullRequest
       6

Положение SQL Server

5 голосов
/ 18 декабря 2011

Я пытаюсь запустить этот оператор sql, но он выдает ошибку "Неверный синтаксис рядом с обновлением"

Select Case @location 

        When 'MediaFiles' Then update tblMediaFiles set mdActive=1
        When 'MediaFiles1' Then update tblMediaFiles1 set mdActive=1
        When 'MediaFiles2' Then update tblMediaFiles2 set mdActive=2
        Else update tblMediaFiles4 set mdActive=1

    End

Ответы [ 2 ]

8 голосов
/ 18 декабря 2011

SQL имеет CASE выражение , которое идет туда, куда, например, должны идти выражения

Используйте оператор IF вместо

IF @location = 'MediaFiles' 
    update tblMediaFiles set mdActive=1
ELSE IF @location = 'MediaFiles1' 
    update tblMediaFiles1 set mdActive=1
ELSE IF @location = 'MediaFiles2' 
    update tblMediaFiles2 set mdActive=2
ELSE
    update tblMediaFiles4 set mdActive=1
6 голосов
/ 18 декабря 2011

Из MSDN:

Невозможно использовать выражение CASE для управления потоком выполнения операторов Transact-SQL, блоков операторов, пользовательских функций и хранимых процедур.Список методов управления потоком см. В языке управления потоком (Transact-SQL) .

. Вы действительно хотите использовать структуру IF-ELSE длятакая логика.

...