誰でも 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
CASE文の'=1'の部分でエラーが入ります。
ステートメントが今あるように、それは機能します。=1 の部分を > 0 に変更すると、上記のエラー メッセージで失敗します。
<> 0 でも失敗します。しかし、 <> 1 では機能します。
=2 および <>2 でも機能します。