EXECUTE-satsen har helt enkelt en annan grammatik än andra satser som SELECT och SET. Titta till exempel på syntaxavsnittet överst på följande två sidor.
EXECUTE-sats:http://msdn.microsoft.com/en-us/ library/ms188332.aspx
SET-sats:http://msdn.microsoft.com/en-us/ library/ms189484.aspx
Syntaxen för EXECUTE accepterar bara ett värde
Medan syntaxen för SET accepterar ett uttryck
Ett värde är i princip bara en hårdkodad konstant, men ett uttryck kommer att utvärderas. Det är som att ha varchar 'SELECT 1 + 1'. Det är bara ett varcharvärde just nu. Du kan dock utvärdera strängen så här:
EXEC('SELECT 1 + 1')
Jag antar att allt jag påpekar är att EXEC-kommandot inte tillåter uttryck per definition, vilket du tydligen redan har upptäckt. Jag vet inte vad T-SQL-utvecklarna hade för avsikt när de gjorde det så. Jag antar att grammatiken bara skulle gå ur hand om du fick skicka underfrågor inom underfrågor i parameterlistan för en lagrad procedur.
T-SQL-uttryck:http://msdn.microsoft.com/en- us/library/ms190286.aspx