0

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

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

4

2 回答 2

1

请尝试以下while循环:

WHILE @PK <= @MaxPK
BEGIN
 SELECT @Name = Name, @Marks = Marks from @MYTABLE
 print @Name
 print @Marks
END

注意:我想,在 select 语句中需要 where 条件才能打印所有数据。

于 2013-08-28T10:38:21.317 回答
1

设置变量的两行可以像这样放在一起。这样,您将只扫描表一次。

SELECT @Name = Name, @Marks = Marks FROM @MYTABLE

只要知道选择放入变量中的行是完全任意的(并且可能每次都是同一行),除非您添加 where 子句。

于 2013-08-28T10:38:23.983 回答