谁能向我解释 SQL Server 中的这种行为。我有一个 UPDATE 语句作为存储过程的一部分,它得到一个'在预期条件的上下文中指定的非布尔类型的表达式,在某些情况下接近'THEN'错误,如下所示。先声明。
UPDATE MyDB.dbo.OrganisationUnits
SET OrganisationUnit = Inserted.OrganisationUnit,
ParentOrganisationUnit =
(CASE WHEN ((SELECT Count(1)
FROM [172.24.112.10].Consurgo.dbo.OrganisationUnits CO1
WHERE CO1.OrganisationUnit = Inserted.ParentOrganisationUnit) = 1)
THEN Inserted.ParentOrganisationUnit
ELSE CO.ParentOrganisationUnit
END),
OrganisationLevel = Inserted.OrganisationLevel
FROM Inserted, Deleted, MyDB.dbo.OrganisationUnits CO
WHERE CO.OrganisationUnit = Deleted.OrganisationUnit
错误出现在“= 1”部分的 CASE 语句中。
就像现在的声明一样,它有效。如果我将 =1 部分更改为 > 0,则它会失败并显示上面的错误消息。
<> 0 它也失败了。但是使用 <> 1 它可以工作。
它也适用于 =2 和 <>2。