WHILE 循环
WHILE 循环
为TRANSACT-SQL 所运行的另一种流行的编程结构是WHILE 循环该命令的语法
如下
语法
WHILE logical_expression
statement(s)
例19.7
WHILE 将一直循环到所给出的逻辑表达式值为假时为止本例中使用了一个简单的
WHILE 循环来增加一个名字为COUNT 的局部变量
输入
1> declare @COUNT int
2> select @COUNT = 1
3> while (@COUNT < 10)
4> begin
5> select @COUNT = @COUNT + 1
6> print "LOOP AGAIN!"
7> end
8> print "LOOP FINISHED!"
使用WHILE 循环在表中翻阅
SQL SERVER 与与其它的数据库系统都有一个特殊类型的对象— — 游标它可以让你
一次一行地翻阅表中的记录参见第13 天但是有一些数据库系统包括SQL SERVER
PER-SYSTEM 10 都不支持翻阅游标的使用在例19.10 中我们给出了如果系统不支持游
标是如何使用WHILE 循环来实现简单的游标功能
例19.10
你可以使用WHILE 循环来一次一个地翻阅表中的记录TRANSACT-SQL 所存储的
ROWCOUNT 数值可以告诉SQL SERVER 一次从查询中返回一条记录如果你使用的是其
它的数据库产品那么你需要确认一下该产品是否有与之类似的设置通过设置
ROWCOUNT 的值为1 默认值为0 也就是不受限制SQL SERVER 可以一次只从查询
中返回一条记录你可以使用这条记录来进行你想要的任何操作当将一个表的内容存入
临时表然后将其删除时你就可以一次选择一行在你工作结束后将它删除当表中的所
有行都被选择出以后你就将表中的所有行都删除了所以我们说它只实现了非常简单的
游标功能现在让我们来运行一个这个例子
输入
1> set rowcount 1
2> declare @PLAYER char(30)
3> create table temp_BATTERS (
4> NAME char(30),
5> TEAM int,
6> AVERAGE float,
7> HOMERUNS int,
8> RBIS int)
9> insert temp_BATTERS
10> select * from BATTERS
11> while exists (select * from temp_BATTERS)
12> begin
13> select @PLAYER = NAME from temp_BATTERS
14> print @PLAYER
15> delete from temp_BATTERS where NAME = @PLAYER
16> end
17> print "LOOP IS DONE!"
分析
注意当你设置了ROWCOUNT 的数值以后你只是改变了从SELECT 语句中返回的
行数如果DELETE 命令的WHERE 子句返回了5 条记录的话那么5 行都将被删除同
时也要注意ROWCOUNT 也可以在循环重设因此在这个循环中你可以通过重新设置
ROWCOUNT 的值来查询数据库中的一些其它的信息
浙公网安备 33010602011771号