EXECUTE-sætningen har simpelthen en anden grammatik end andre sætninger som SELECT og SET. Se f.eks. syntaksafsnittet øverst på de følgende to sider.
EXECUTE-sætning:http://msdn.microsoft.com/en-us/ library/ms188332.aspx
SET-erklæring:http://msdn.microsoft.com/en-us/ library/ms189484.aspx
Syntaksen for EXECUTE accepterer kun en værdi
Hvorimod syntaksen for SET accepterer et udtryk
En værdi er grundlæggende kun en hårdkodet konstant, men et udtryk vil blive evalueret. Det er som at have varchar 'SELECT 1 + 1'. Det er bare en varchar-værdi lige nu. Du kan dog evaluere strengen som denne:
EXEC('SELECT 1 + 1')
Jeg formoder, at alt, hvad jeg påpeger, er, at EXEC-kommandoen ikke tillader udtryk per definition, hvilket du tilsyneladende allerede har fundet ud af. Jeg ved ikke, hvad intentionen med udviklerne af T-SQL var, da de lavede det på den måde. Jeg formoder, at grammatikken bare ville komme over styr, hvis du fik lov til at smide underforespørgsler i underforespørgsler i parameterlisten for en lagret procedure.
T-SQL-udtryk:http://msdn.microsoft.com/en- us/library/ms190286.aspx