簡體   English   中英

SQL Server存儲過程參數分配

[英]SQL Server stored procedure parameter assignment

為什么不能使用函數直接分配存儲過程參數?

例如

exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()

但是我發現我必須對變量進行除法以保持值

declare @temp type = aFunctionThatReturnsAnAppropriateValue()

exec myStoredProc @firstParam = @temp

這似乎是多余的

引用EXECUTE(Transact-SQL)

Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH RECOMPILE ]
    }
[;]

您可以看到它顯式表示@variablevalue 我猜這是一種語言限制,因為您既不能以變量或值的形式編寫對函數的調用。 它是可執行代碼(一個表達式 ),在變量聲明期間的簡寫分配只是一種誤導性的獎勵。

編輯:比較DECLAREEXECUTE的描述差異:

對於DECLARE

=值
向內聯變量分配一個值。 該值可以是常量或表達式 ,但它必須與變量聲明類型匹配或可以隱式轉換為該類型。

在頁面上查找EXECUTE ,看不到表達式。 在我看來,這很方便 ,因為我認為您正在嘗試指出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM