Du skal bruge en mellemvariabel. SQL Server understøtter ikke denne form for operation i selve parameterlisten, selvom den har været på TODO-listen i et par år! (Se Connect Item:Brug skalarfunktioner som lagrede procedureparametre)
Grammatikken for EXEC
er
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH <execute_option> [ ,...n ] ]
}
[;]
Dokumentationen er i øjeblikket ikke så klar med hensyn til et acceptabelt format for value
men det ser ud til kun at være "simple" udtryk såsom bogstavelige værdier eller @@
systemfunktioner med præfiks (såsom @@IDENTITY
). Andre systemfunktioner såsom SCOPE_IDENTITY()
er ikke tilladt (selv dem, der ikke kræver parenteser såsom CURRENT_TIMESTAMP
er ikke tilladt).
Så indtil videre skal du bruge syntaks som f.eks. nedenstående
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