繁体   English   中英

如何在更新查询中编写大小写

[英]How to write case in update query

我正在尝试在更新查询中使用案例,但它给我错误

找不到存储过程'update dbo.ARInvoiceItems set Hideshowflag ='如果Hideshowflag为null则Hideshowflag ='N'e'。

在SQL Server 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 SOId=@SOID 

尝试这个。 您也可以在CASE的逻辑语句中使用Or ,因为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 

或者 ,对于使用IsnullCoalesce的相同逻辑,可以使用Simple Case来完成;

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

找不到存储过程'update dbo.ARInvoiceItems set Hideshowflag ='如果Hideshowflag为null则Hideshowflag ='N'e'。

我认为您正在尝试将以上更新查询作为存储过程运行。 您需要的是,使用上述查询创建一个存储过程 (如果尚未执行),然后使用其名称as执行该存储过程;

EXEC 'Your_procedure_name_should_go_here'

您发布的代码中存在语法错误

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 

但是错误消息说你得到了

找不到存储过程'update dbo.ARInvoiceItems set Hideshowflag = ...

如果执行EXEC @Foo而不是EXEC (@Foo)通常会发生

此语句是否在您正在EXEC的字符串变量中?

这就是你想要的

 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM