中間変数を使用する必要があります。 SQL Serverは、数年前からTODOリストに含まれていますが、パラメーターリスト自体ではこの種の操作をサポートしていません。 (「アイテムの接続:ストアドプロシージャのパラメータとしてスカラー関数を使用する」を参照)
EXEC
の文法
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH <execute_option> [ ,...n ] ]
}
[;]
ドキュメントは現在、value
の許容可能な形式についてそれほど明確ではありません しかし、それはリテラル値や@@
などの「単純な」表現にすぎないようです。 プレフィックス付きのシステム関数(@@IDENTITY
など) )。 SCOPE_IDENTITY()
などの他のシステム関数 許可されていません(CURRENT_TIMESTAMP
などの括弧を必要としないものでも) 許可されていません。
したがって、当面は次のような構文を使用する必要があります
DECLARE @pID INT;
SET @pID = 1;
/*If 2008+ for previous versions this needs to be two separate statements*/
DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11))
EXEC WriteLog
'Component',
'Source',
@string