Я следующий сценарий для создания данных временныхSQL Looping временной таблицы и чтение данных
DECLARE @Name NVARCHAR(100), @Marks INT
DECLARE @MYTABLE TABLE
(
[Name][nvarchar](100) NULL,
[Marks][INT] NULL
)
INSERT INTO @MYTABLE ([Name],[Marks]) VALUES ('Mark',50);
INSERT INTO @MYTABLE ([Name],[Marks]) VALUES ('Steve',50);
INSERT INTO @MYTABLE ([Name],[Marks]) VALUES ('Don',50);
Теперь я хочу цикл его, как показано ниже сценарий
SELECT @MaxPK = MAX(PK) from @MYTABLE
WHILE @PK <= @MaxPK
BEGIN
SET @Name = SELECT Name from @MYTABLE
SET @Marks = SELECT Marks from @MYTABLE
print @Name
print @Marks
SET @PK = @PK + 1
END
Но я получаю сообщение об ошибке рядом ЗЕЬЕСТА ,
«Неверный синтаксис рядом с ключевым словом SELECT»!
Возможно, это потому, что этот оператор select возвращает несколько строк, а не одно значение, и вы не можете установить несколько строк в свою переменную @Name –
Помимо чего-либо еще 'PK' не существует в' @ MYTABLE'. И почему вам все равно нужно перебирать строки по очереди? И если у вас действительно есть такая потребность, почему бы не использовать курсор для ввода в '@ Name, @ Marks, @ PK' вместо имитации одного с циклом while? –
Привет, Dark, я добавлю условие WHERE, чтобы он всегда возвращал одну строку. –