全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储过程中的循环语句 WHILE设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。语法WHILE Boolean_expression sql_statement | statement_block BREAK sql_statement | statement_block CONTINUE 参数Boolean_expression返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 Select 语句,必须用圆括号将 Select 语句括起来。sql_statement | statement_blockTransact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字 BEGIN 和 END。BREAK导致从最内层的 WHILE 循环中退出。将执行出现在 END 关键字后面的任何语句,END 关键字为循环结束标记。CONTINUE使 WHILE 循环重新开始执行,忽略 CONTINUE 关键字后的任何语句。注释如果嵌套了两个或多个 WHILE 循环,内层的 BREAK 将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。示例A. 在嵌套的 IF.ELSE 和 WHILE 中使用 BREAK 和 CONTINUE在下例中,如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过 $50,然后退出 WHILE 循环并打印一条消息。USE pubsGOWHILE (Select AVG(price) FROM titles) $50BREAK ELSECONTINUEENDPRINT Too much for the market to bearB. 在带有游标的过程中使用 WHILE以下的 WHILE 结构是名为 count_all_rows 过程中的一部分。下例中,该 WHILE 结构测试用于游标的函数 FETCH_STATUS 的返回值。因为 FETCH_STATUS 可能返回 2、-1 或 0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取 (0) 后将执行 BEGIN.END 循环内部的 Select 语句。USE pubsDECLARE tnames_cursor CURSORFOR Select TABLE_NAME FROM INFORMATION_SCHEMA.TABLESOPEN tnames_cursorDECLARE tablename sysname-SET tablename = authorsFETCH NEXT FROM tnames_cursor INTO tablenameWHILE (FETCH_STATUS -1)BEGIN IF (FETCH_STATUS -2) BEGINSelect tablename = RTRIM(tablename)EXEC (Select + tablename + = count(*) FROM + tablename )PRINT END FETCH NEXT FROM tnames_cursor INTO tablenameENDCLOSE tnames_cursorDEALLOCATE tnames_cursor附加:一个SQL Server存储过程循环的例子 declare ID_cursorcursor for select * from 表名 open ID_cursor /*while fetch_status=0*/ begin update 表名 set 字段名=值 end close ID_cursor deallocate ID_cursorSQL Server中Procedure的写法(供参考) 比较两个table,已有这条记录update,没有insert.Create procedure upd_employeeasdeclare emp_nochar(8)declare namecvarchar(30)declare org char(6)declare emp_type char(4)declare lin char(4)declare entr_date smalldatetimedeclare deptr_fg char(10)declare deptr_date smalldatetimeDECLAREcuremp CURSOR forSelect emp_no,namec,org,emp_type,lin,entr_date,deptr_fg,deptr_date FROM temp_empfor updateopen curempwhile(0=0) begin fetch next from curemp into emp_no,namec,org,emp_type,lin,entr_date, deptr_fg,deptr_date;if fetch_status0 breakUpdate employee SET namec= namec,org=org,emp_type=emp_type,lin=lin,entr_date=entr_date,deptr_fg=deptr_fg,deptr_date=deptr_dateWhere emp_no = emp_no;ENDclose curempdeallocate curempinsert into employee(emp_no,namec,org,emp_type,lin,entr_date,deptr_fg,deptr_date)select emp_no,namec,org,emp_ty
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂配电课件
- 船舶气象与海况预报模拟试题及答案
- 人力资源管理师绩效管理模拟试卷及答案
- 摩托车驾驶证考试科目二场地驾驶技巧预测试题及答案
- 伤口造口专科护士护理知识巩固习题及答案
- 工程门介绍课件
- 驾驶证考试科目一理论高频考点专项题库及答案
- 工程领域设计思路课件
- 营销团队社交渠道绩效考核表
- 工程类内容素材课件
- 2026年安全生产三类人员试题和答案
- 燃气管道工程冬季施工方案
- 《我和我和他和他》舞台剧本(排练精简版)
- 2027贵州航天电器秋季招聘284人笔试模拟试题及答案详解
- 2026年成都市中考英语试题(含答案)
- 2026年城市管廊运维安全考试题(附答案)
- 2026年水利安全员b证考试题库及答案解析
- 2026年消防安全专题培训(含近期火灾事故案例)
- 国聘社会招聘笔试测评题库
- 纳米多孔材料复合膜:化工分离领域的制备技术与应用探索
- 高三化学复习重点教学设计方案
评论
0/150
提交评论