SQL循环临时表和读取数据

时间:2013-08-28 10:34:01

标签: sql sql-server loops

我有以下脚本来创建临时数据

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”附近的语法不正确!

2 个答案:

答案 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。