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
:
- 价值
- @变量
- 默认
因此您需要使用变量来保存函数调用的结果并将其传递给存储过程。
使用 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
:
- 价值
- @变量
- 默认
因此您需要使用变量来保存函数调用的结果并将其传递给存储过程。