MYSQL:如何使用 case when 作为 exec 参数

MS SSQL: How to use case when as exec parameter

使用 SQL Server 2008 R2 我正在尝试使用带有两个参数的 exec 来执行存储过程。 第一个参数是唯一标识符。 第二个参数可以是“2”或“3”。

我正在使用一个书面函数,它需要唯一标识符和 returns 如果标识符指向的情况是 A 类型,则为 true (1),如果是 B 类型,则为 false (0) . 类似于 VB.Net IIF 或 C# 等效项,我考虑过使用 Case When 来检索使用提到的函数的值。

我希望它看起来像这样:

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

我得到的只是一个语法错误。

我知道我可以使用以下方法解决此问题:

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

有没有办法使用 Case When 在 exec 行中指定一个值,或者我是否需要使用给定的解决方法?

I expected it to look something like this:

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

您的假设完全错误。检查 EXECUTE documentation

Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH RECOMPILE ]
    }
[;]

如您所见,您可以通过 @parameter:

  • 价值
  • @变量
  • 默认

因此您需要使用变量来保存函数调用的结果并将其传递给存储过程。