MS SSQL: Wie benutze ich case when als exec Parameter

Mit SQL Server 2008 R2 versuche ich, eine gespeicherte Prozedur mithilfe von exec mit zwei Parametern auszuführen. Der erste Parameter ist eine eindeutige Kennung. Der zweite Parameter kann entweder '2' oder '3' sein.

Ich verwende eine geschriebene Funktion, die den eindeutigen Bezeichner erwartet und true (1) zurückgibt, wenn der Fall, auf den der Bezeichner zeigt, vom Typ A ist, oder false (0), wenn der Fall vom Typ B. Ähnlich wie bei VB.Net IIF oder Das C # -Äquivalent, über das ich nachgedacht habe, Case When zu verwenden, um den Wert mit der genannten Funktion abzurufen.

Ich habe erwartet, dass es ungefähr so aussieht:

exec spAddCaseToDeletedInso @Case, (select case when dbo.getCaseOwnerByCaseId(@Case) = 1 then '3' else '2' end)

Alles was ich bekomme ist ein Syntaxfehler.

Ich weiß, dass ich dieses Problem mit der folgenden Methode umgehen kann:

declare @CaseOwner as char(1) = (select case when dbo.getCaseOwnerByCaseId(@Case) = 1 then '3' else '2' end)
exec spAddCaseToDeletedInso @Case, @CaseOwner

Gibt es eine Möglichkeit, Case zu verwenden? Wann muss ein Wert in der exec-Zeile angegeben werden oder muss die angegebene Problemumgehung verwendet werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage