我有以下脚本来创建临时数据
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”附近的语法不正确!
答案 0 :(得分:1)
请在循环时尝试以下内容:
WHILE @PK <= @MaxPK
BEGIN
SELECT @Name = Name, @Marks = Marks from @MYTABLE
print @Name
print @Marks
END
注意:我猜,select语句中需要where条件才能打印所有数据。
答案 1 :(得分:1)
您设置变量的两行可以像这样放在一起。这样你只会扫描一次表。
SELECT @Name = Name, @Marks = Marks FROM @MYTABLE
只要知道选择放入变量的行是完全任意的(并且每次都可能是同一行),除非你添加whereclause。