Я экспериментировал с установкой значения переменной
declare @tablename nvarchar(1000);
set @tablename = SELECT TOP 1 NAME FROM SYS.TABLES ORDER BY NAME; //Error
set @tablename = (SELECT TOP 1 @tablename = NAME FROM SYS.TABLES ORDER BY NAME;) //Works fine
Какие магические c круглые скобки сделали здесь?
Я думаю, это связано с оценкой. Но почему тогда это не оценивалось в первом утверждении?