0

関数を使用してストアドプロシージャパラメータを直接割り当てることができないのはなぜですか?

例えば

exec myStoredProc @firstParam = aFunctionThatReturnsAnAppropriateValue()

しかし、値を保持するためだけに変数をデカールする必要があることがわかりました

declare @temp type = aFunctionThatReturnsAnAppropriateValue()

exec myStoredProc @firstParam = @temp

冗長に見える

4

1 に答える 1

1

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 ]
    }
[;]

@variable明示的にまたはを示していることがわかりますvalue。関数の呼び出しを変数としても値としても記述できないため、これは言語の制限だと思います。これは実行可能コード()であり、変数宣言中の省略形の割り当ては誤解を招くボーナスにすぎません。

DECLARE編集:との説明の違いを比較してくださいEXECUTE

にとってDECLARE

=value
インラインで変数に値を割り当てます。値は定数または式にすることができますが、変数宣言型と一致するか、暗黙的にその型に変換可能である必要があります。

のページをEXECUTE見ると、式の言及がありません。あなたが指摘しようとしているように、それは便利だと私には思えます。

于 2012-07-06T09:43:33.563 に答える