为什么不能使用函数直接分配存储过程参数?
例如
exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()
但我发现我必须标记一个变量才能保存该值
declare @temp type = aFunctionThatReturnsAnAppropriateValue()
exec myStoredProc @firstParam = @temp
这似乎是多余的
为什么不能使用函数直接分配存储过程参数?
例如
exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()
但我发现我必须标记一个变量才能保存该值
declare @temp type = aFunctionThatReturnsAnAppropriateValue()
exec myStoredProc @firstParam = @temp
这似乎是多余的
Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH RECOMPILE ]
}
[;]
您可以看到它明确表示@variable
or value
。我想这是一种语言限制,因为您既不能将函数调用写为变量也不能写为值;它是可执行代码(一个表达式),变量声明期间的简写赋值只是一种误导性的奖励。
编辑:比较 和 的描述DECLARE
差异EXECUTE
:
为了DECLARE
=value
为内联变量赋值。该值可以是常量或表达式,但它必须与变量声明类型匹配,或者可以隐式转换为该类型。
浏览页面时EXECUTE
,我没有看到提及表达式。在我看来,这会很方便,正如我认为您试图指出的那样。