Просто потому, что такое невозможно. Это немного похоже на вопрос: «Почему этот синтаксис JavaScript никогда не был реализован»:
var operator = "<";
var statement = "if"
var op1 = 4
statement (op1 operator 5) op1++; // whatever
Это никогда не было реализовано, потому что это неосуществимо и, честно говоря, это не имеет никакого смысла. JavaScript имеет eval()
для динамического кода:
code = statement+" (op1 "+operator+" 5) op1++;";
eval( code );
И SQL Server имеет EXECUTE
для динамического SQL:
/* example only, it is not recommendable to actually *do* this */
Create Proc RunParameterisedSelect
@tableName varchar(100),
@columnName varchar(100),
@value varchar(100)
as
begin
declare @code varchar(8000)
set @code = 'select * from ['+@tableName+'] where ['+@columnName+'] = '+@value
exec (@code)
end
Суть та же - если это не фиксированная, неизменяемая структура кода (а имя таблицы или столбца код в SQL, а не переменная), вы должны составить строку из это сначала и разбери что. Интерпретатор / компилятор должен создать новое синтаксическое дерево (которое, конечно же, будет исправлено снова).