1

谁能向我解释 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。

4

0 回答 0