Использование скобок в T- SQL? - PullRequest
0 голосов
/ 15 января 2020

Я экспериментировал с установкой значения переменной

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 круглые скобки сделали здесь?

Я думаю, это связано с оценкой. Но почему тогда это не оценивалось в первом утверждении?

1 Ответ

3 голосов
/ 15 января 2020

Подзапрос требует свой собственный набор скобок. Поэтому второй имеет правильный синтаксис, поскольку использует их.

Вы можете быть перепутаны с select против set. Вы можете установить параметр, используя select, и скобки не нужны:

SELECT TOP 1 @tablename = NAME
FROM SYS.TABLES
ORDER BY NAME;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...