L'istruzione EXECUTE ha semplicemente una grammatica diversa rispetto ad altre istruzioni come SELECT e SET. Ad esempio, osserva la sezione relativa alla sintassi nella parte superiore delle due pagine seguenti.
Istruzione EXECUTE:http://msdn.microsoft.com/en-us/ libreria/ms188332.aspx
Istruzione SET:http://msdn.microsoft.com/en-us/ libreria/ms189484.aspx
La sintassi per EXECUTE accetta solo un valore
Mentre la sintassi per SET accetta un'espressione
Un valore è fondamentalmente solo una costante codificata, ma verrà valutata un'espressione. È come avere il varchar 'SELECT 1 + 1'. È solo un valore varchar in questo momento. Tuttavia, puoi valutare la stringa in questo modo:
EXEC('SELECT 1 + 1')
Suppongo che tutto ciò che sto sottolineando sia che il comando EXEC non consente espressioni per definizione, cosa che apparentemente hai già scoperto. Non so quale fosse l'intenzione degli sviluppatori di T-SQL quando l'hanno fatto in quel modo. Suppongo che la grammatica sfugga di mano se ti fosse permesso lanciare sottoquery all'interno di sottoquery nell'elenco dei parametri di una stored procedure.
Espressione T-SQL:http://msdn.microsoft.com/en- us/library/ms190286.aspx