Het EXECUTE-statement heeft gewoon een andere grammatica dan andere statements zoals SELECT en SET. Bekijk bijvoorbeeld de syntaxissectie bovenaan de volgende twee pagina's.
EXECUTE-instructie:http://msdn.microsoft.com/en-us/ bibliotheek/ms188332.aspx
SET-instructie:http://msdn.microsoft.com/en-us/ bibliotheek/ms189484.aspx
De syntaxis voor EXECUTE accepteert alleen een waarde
Terwijl de syntaxis voor SET een expressie . accepteert
Een waarde is in feite gewoon een hard gecodeerde constante, maar een uitdrukking wordt geëvalueerd. Het is alsof je de varchar 'SELECT 1 + 1' hebt. Het is nu gewoon een varchar-waarde. U kunt echter evalueren de string als volgt:
EXEC('SELECT 1 + 1')
Ik veronderstel dat ik er alleen op wijs dat het EXEC-commando per definitie geen expressies toestaat, wat je blijkbaar al ontdekt hebt. Ik weet niet wat de bedoeling was van de ontwikkelaars van T-SQL toen ze het zo maakten. Ik veronderstel dat de grammatica gewoon uit de hand zou lopen als je subquery's binnen subquery's in de parameterlijst van een opgeslagen procedure zou mogen gooien.
T-SQL-expressie:http://msdn.microsoft.com/en- us/library/ms190286.aspx