Как написать случай в запросе на обновление

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

Не удалось найти, что хранимая процедура 'обновляет dbo. ARInvoiceItems устанавливают Hideshowflag = 'случай, когда Hideshowflag пустой тогда Hideshowflag ='N' e'.

В SQL-сервере 2005.following мой вопрос, который я использовал.

update dbo.ARInvoiceItems 
    set Hideshowflag =(
        case 
            when Hideshowflag is null then Hideshowflag='N'
            when Hideshowflag='N' then 'Y'
            when Hideshowflag='Y' then 'N' end`
where [email protected] 
0
Если это - ваш фактический код, у вас есть синтаксическая ошибка - вы не закрылись, скобка, начинающаяся в , установила Hideshowflag = (.
добавлено автор RB., источник
"Не удалось найти, что хранимая процедура", вероятно, означает there' s что-то не так с кодом, который предполагается к , выполняет этот вопрос. Показ, что код мог бы помочь.
добавлено автор Anton Kovalenko, источник

3 ответы

Try this. You can also use Or within the logical statement of CASE as Hideshowflag is null or Hideshowflag='Y'

Update dbo.ARInvoiceItems 
    Set Hideshowflag =
        Case 
            When Hideshowflag is null or Hideshowflag='Y' Then  'N'
            When Hideshowflag='N' Then 'Y'
        End
Where SOId = @SOID 

OR it can be done with a Simple Case for the same logic using Isnull or Coalesce as;

Update dbo.ARInvoiceItems 
    Set Hideshowflag =
        Case Isnull(Hideshowflag,'Y')
            When 'Y' Then  'N'
            When 'N' Then  'Y'
        End
Where SOId = @SOID 

Не удалось найти, что хранимая процедура 'обновляет dbo. ARInvoiceItems установлен Hideshowflag = 'случай, когда Hideshowflag пустой тогда Hideshowflag ='N' e'.

Я думаю, что вы пытаетесь бежать выше запроса на обновление как хранимая процедура. То, в чем вы нуждаетесь, создайте хранимую процедуру с вышеупомянутым вопросом (если вы не сделали его) тогда выполняют использование хранимой процедуры, это - имя как;

EXEC 'Your_procedure_name_should_go_here'
3
добавлено

У вас есть синтаксическая ошибка в коде, который вы опубликовали

UPDATE dbo.ARInvoiceItems
SET    Hideshowflag =  CASE
                          WHEN Hideshowflag IS NULL THEN  'N'
                          WHEN Hideshowflag = 'N' THEN 'Y'
                          WHEN Hideshowflag = 'Y' THEN 'N'
                        END 
WHERE  SOId = @SOID 

Но сообщение об ошибке, вы говорите вас, добирается

Не удалось найти, что хранимая процедура 'обновляет dbo. ARInvoiceItems устанавливают Hideshowflag =...

обычно происходит, если вы действительно <кодируете> ДОЛЖНОСТНОЕ ЛИЦО @Foo вместо ДОЛЖНОСТНОЕ ЛИЦО (@Foo)

Это заявление в строковой переменной то, что вы ДОЛЖНОСТНОЕ ЛИЦО - луг?

2
добавлено

Это - то, что вы хотите

 DECLARE @TEMP table
    (
        jobid int IDENTITY (1,1),
        statusCode int
    )

    INSERT INTO @TEMP
    SELECT 15 UNION 
    SELECT 114 UNION 
    SELECT 14 UNION 
    SELECT 152 UNION 
    SELECT 41 

    SELECT * FROM @TEMP

    DECLARE @jobid int  = 3, @statusCode int = 40

    UPDATE @TEMP
    SET statusCode = (CASE WHEN @statusCode = 40 THEN 15 ELSE 14 END)
    WHERE jobid = @jobid

    SELECT * FROM @TEMP
1
добавлено
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)