Операторът EXECUTE просто има различна граматика от други изрази като SELECT и SET. Например, наблюдавайте секцията за синтаксис в горната част на следващите две страници.
Изявление EXECUTE:http://msdn.microsoft.com/en-us/ библиотека/ms188332.aspx
Изявление SET:http://msdn.microsoft.com/en-us/ библиотека/ms189484.aspx
Синтаксисът за EXECUTE приема само стойност
Докато синтаксисът за SET приема израз
Стойността е просто твърдо кодирана константа, но изразът ще бъде оценен. Това е като да имате varchar 'SELECT 1 + 1'. В момента това е просто стойност на varchar. Въпреки това можете да оцените низа по този начин:
EXEC('SELECT 1 + 1')
Предполагам, че всичко, което посочвам, е, че командата EXEC не позволява изрази по дефиниция, което очевидно вече сте разбрали. Не знам какво е било намерението на разработчиците на T-SQL къде, когато са го направили по този начин. Предполагам, че граматиката просто ще излезе извън контрол, ако ви е позволено да хвърляте подзаявки в подзаявките в списъка с параметри на съхранена процедура.
T-SQL израз:http://msdn.microsoft.com/en- us/library/ms190286.aspx