Sql 如何在更新查询中编写case
我试图在更新查询中使用用例,但它给了我错误信息Sql 如何在更新查询中编写case,sql,sql-server-2005,Sql,Sql Server 2005,我试图在更新查询中使用用例,但它给了我错误信息 找不到存储过程“update dbo.ARInvoiceItems set Hideshowflag=”如果Hideshowflag为null,则Hideshowflag='N'e' 以下是我使用的查询 update dbo.ARInvoiceItems set Hideshowflag =( case when Hideshowflag is null then Hideshowflag='N'
找不到存储过程“update dbo.ARInvoiceItems set Hideshowflag=”如果Hideshowflag为null,则Hideshowflag='N'e' 以下是我使用的查询
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
您发布的代码中有语法错误
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)
此语句是否在字符串变量中表示您正在执行?您发布的代码中有语法错误
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)
此语句是否在字符串变量中,您正在执行?尝试此操作。您还可以在
CASE
的逻辑语句中使用或,因为Hideshowflag为null或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
或者,对于相同的逻辑,可以使用Isnull
或Coalesce
as使用简单案例
Update dbo.ARInvoiceItems
Set Hideshowflag =
Case Isnull(Hideshowflag,'Y')
When 'Y' Then 'N'
When 'N' Then 'Y'
End
Where SOId = @SOID
找不到存储过程“update dbo.com”集合
Hideshowflag='case当Hideshowflag为null时,则Hideshowflag='N'
e’
我认为您正在尝试将上述更新查询作为存储过程运行。您需要的是,使用上面的查询(如果您还没有执行),然后使用其名称作为执行存储过程
EXEC 'Your_procedure_name_should_go_here'
试试这个。您还可以在CASE
的逻辑语句中使用或,因为Hideshowflag为null或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
或者,对于相同的逻辑,可以使用Isnull
或Coalesce
as使用简单案例
Update dbo.ARInvoiceItems
Set Hideshowflag =
Case Isnull(Hideshowflag,'Y')
When 'Y' Then 'N'
When 'N' Then 'Y'
End
Where SOId = @SOID
找不到存储过程“update dbo.com”集合
Hideshowflag='case当Hideshowflag为null时,则Hideshowflag='N'
e’
我认为您正在尝试将上述更新查询作为存储过程运行。您需要的是,使用上面的查询(如果您还没有执行),然后使用其名称作为执行存储过程
EXEC 'Your_procedure_name_should_go_here'
这就是你想要的
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
这就是你想要的
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
如果这是您的实际代码,则会出现语法错误-您没有关闭从set Hideshowflag=(
“找不到存储过程”开始的括号可能意味着执行此查询的代码有问题。显示该代码可能会有所帮助。如果这是您的实际代码,则您有语法错误-您没有关闭从set Hideshowflag=(
“找不到存储过程”开始的括号可能意味着执行此查询的代码有问题。显示该代码可能会有所帮助。