[英]SQL Server stored procedure parameter assignment
為什么不能使用函數直接分配存儲過程參數?
例如
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
或value
。 我猜這是一種語言限制,因為您既不能以變量或值的形式編寫對函數的調用。 它是可執行代碼(一個表達式 ),在變量聲明期間的簡寫分配只是一種誤導性的獎勵。
編輯:比較DECLARE
和EXECUTE
的描述差異:
對於DECLARE
=值
向內聯變量分配一個值。 該值可以是常量或表達式 ,但它必須與變量聲明類型匹配或可以隱式轉換為該類型。
在頁面上查找EXECUTE
,看不到表達式。 在我看來,這很方便 ,因為我認為您正在嘗試指出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.