为 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!〃
注 上例实际上是一个简单的 FOR 循环 在一些其它的解释器如 ORACLE 的 PL/SQL 中
确实提供一名称为 FOR 的循环方式 你应该检查你的系统看它是否支持这种循环方式
BREAK 命令
注意 BREAK 语句应该在 IF 条件语句中出现
424
…………………………………………………………Page 425……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入
1》 declare @COUNT int
2》 select @COUNT = 1
3》 while (@COUNT 《 10)
4》 begin
5》 select @COUNT = @COUNT + 1
6》 if (@COUNT = 8)
7》 begin
8》 break
9》 end
10》 else
11》 begin
12》 print 〃LOOP AGAIN!〃
13》 end
14》 end
15》 print 〃LOOP FINISHED!〃
分析
在这个例子中当 COUNT 的值为 8 时 BREAK 将导致循环的退出
COUNTINUE 命令
COUNTINUE 命令也是一个可以在 WHILE 循环中执行的特殊命令 它会令循环立即
从 BEGIN 处开始 也就是说这时 WHILE 将不再执行其模块中余下的部分而是立即从开始
执行了 也 BREAK 命令一样 COUNTINUE 也应该在 IF 条件语句中出现 如例 19。9 所
示
例 19。9
注意 这里的 COUNTINUE 也是放在 IF 之中的
输入
425
…………………………………………………………Page 426……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
1》 declare @COUNT int
2》 select @COUNT = 1
3》 while (@COUNT 《 10)
4》 begin
5》 select @COUNT = @COUNT + 1
6》 if (@COUNT = 8)
7》 begin
8》 continue
9》 end
10》 else
11》 begin
12》 print 〃LOOP AGAIN!〃
13》 end
14》 end
15》 print 〃LOOP FINISHED!〃
分析
除了用 COUNTINUE 替换了 BREAK 以外 例 19。9 与 19。8 是一样的 与当 COUNT=8
时即出循环不同 本例只是跳到的循环的起使部分继续执行
使用 WHILE 循环在表中翻阅
SQL SERVER 与与其它的数据库系统都有一个特殊类型的对象— — 游标 它可以让你
一次一行地翻阅表中的记录 参见第 13 天 但是 有一些数据库系统 包括 SQL SERVER
PER…SYSTEM 10 都不支持翻阅游标的使用 在例 19。10 中我们给出了如果系统不支持游
标是如何使用 WHILE 循环来实现简单的游标功能
例 19。10
你可以使用 WHILE 循环来一次一个地翻阅表中的记录 TRANSACT…SQL 所存储的
ROWCOUNT 数值可以告诉 SQL SERVER 一次从查询中返回一条记录 如果你使用的是其
它的数据库产品 那么你需要确认一下该产品是否有与之类似的设置 通过设置
426
…………………………………………………………Page 427……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
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 的值来查询数据库中的一些其它的信息
427
…………………………………………………………Page 428……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
TRANSACT…SQL 中的通配符
在 SQL 中使用通配符?
小说推荐
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 电子电路大全(PDF格式)
- -Page 1-电力生产人员技能培训电路基础部分电路基础部分电电路路基基础础部部分分-Page 2-一、电路的基本概念和基本定律-Page 3-考试点1o 1、掌握电阻、独立电压源、独立电流源、11受控源、电容、电感、耦合电感、理想变压器诸元件的定义、性质2o 2、掌握电流、电压参考方向的概念223
- 最新章:第353章