0
为什么我不能使用函数直接分配存储过程参数?SQL Server存储过程参数分配
例如
exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()
,但我觉得我必须decalre一个变量只是为了保持它似乎是多余的
为什么我不能使用函数直接分配存储过程参数?SQL Server存储过程参数分配
例如
exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()
,但我觉得我必须decalre一个变量只是为了保持它似乎是多余的
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
或value
。我想这是一种语言限制,因为您既不能将函数的调用作为变量写入,也不能写入值;它是可执行代码(一个表达式),而变量声明期间的简短赋值只是一种误导性奖励。
编辑:比较描述的差为DECLARE
和EXECUTE
:
对于DECLARE
=值
指定一个值在线变量。值可以是常数或表达式,但它必须匹配变量 声明类型或可隐式转换为该类型。
当通过页面查看EXECUTE
时,我没有看到表达式的提及。在我看来,这将是方便,因为我认为你想指出。
它看起来多余。那么你的问题是什么? – Andomar 2012-07-06 08:56:38
为什么我不能这样做?我发现第一个代码段中的语法没有被sql server management studio – 0xor1 2012-07-06 08:57:34
接受它的语法无效。您不能在'exec'调用中将函数作为参数传递。只有微软可以改变这一点。 – Andomar 2012-07-06 08:59:09