Du måste använda en mellanvariabel. SQL Server stöder inte denna typ av operation i själva parameterlistan även om den har funnits på TODO-listan i några år! (Se Anslut objekt:Använd skalära funktioner som lagrade procedurparametrar)
Grammatiken för EXEC
är
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH <execute_option> [ ,...n ] ]
}
[;]
Dokumentationen är för närvarande inte så tydlig med ett acceptabelt format för value
men det verkar bara vara "enkla" uttryck som bokstavliga värden eller @@
systemfunktioner med prefix (som @@IDENTITY
). Andra systemfunktioner som SCOPE_IDENTITY()
är inte tillåtna (även de som inte kräver parenteser som CURRENT_TIMESTAMP
är inte tillåtna).
Så för tillfället måste du använda syntax som nedan
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