使用SQL Server 2008 R2我尝试使用带有两个参数的exec执行存储过程。 第一个参数是唯一标识符。 第二个参数可以是' 2'或者' 3'。
我使用了一个需要唯一标识符的书面函数,如果标识符指向的情况是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何时在exec行中指定一个值还是我需要使用给定的解决方法?
答案 0 :(得分:3)
我希望它看起来像这样:
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
:
因此,您需要使用变量来保存函数调用的结果并将其传递给存储过程。