存储过程中的循环语句

存储过程中的循环语句

ID:34759335

大小:64.18 KB

页数:4页

时间:2019-03-10

存储过程中的循环语句_第1页
存储过程中的循环语句_第2页
存储过程中的循环语句_第3页
存储过程中的循环语句_第4页
资源描述:

《存储过程中的循环语句》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、存储过程中的循环语句                                      WHILE设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。语法WHILEBoolean_expression    {sql_statement

2、statement_block}    [BREAK]    {sql_statement

3、statement_block}    [CONTINUE]参数Bool

4、ean_expression返回TRUE或FALSE的表达式。如果布尔表达式中含有Select语句,必须用圆括号将Select语句括起来。{sql_statement

5、statement_block}Transact-SQL语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字BEGIN和END。BREAK导致从最内层的WHILE循环中退出。将执行出现在END关键字后面的任何语句,END关键字为循环结束标记。CONTINUE使WHILE循环重新开始执行,忽略CONTINUE关键字后的任何语句。注释如果

6、嵌套了两个或多个WHILE循环,内层的BREAK将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。示例A.在嵌套的IF...ELSE和WHILE中使用BREAK和CONTINUE在下例中,如果平均价格少于$30,WHILE循环就将价格加倍,然后选择最高价。如果最高价少于或等于$50,WHILE循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过$50,然后退出WHILE循环并打印一条消息。USEpubsGOWHILE(SelectAVG(price)F

7、ROMtitles)<$30BEGIN  Updatetitles      SETprice=price*2  SelectMAX(price)FROMtitles  IF(SelectMAX(price)FROMtitles)>$50      BREAK  ELSE      CONTINUEENDPRINT'Toomuchforthemarkettobear'B.在带有游标的过程中使用WHILE以下的WHILE结构是名为count_all_rows过程中的一部分。下例中,该WHILE结构测试用于游标的函数

8、@@FETCH_STATUS的返回值。因为@@FETCH_STATUS可能返回–2、-1或0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取(0)后将执行BEGIN...END循环内部的Select语句。USEpubsDECLAREtnames_cursorCURSORFOR  SelectTABLE_NAME  FROMINFORMATION_SCHEMA.TABLESOPENtnames_cursorDECLARE@tablenamesysname--S

9、ET@tablename='authors'FETCHNEXTFROMtnames_cursorINTO@tablenameWHILE(@@FETCH_STATUS<>-1)BEGIN  IF(@@FETCH_STATUS<>-2)  BEGIN      Select@tablename=RTRIM(@tablename)      EXEC('Select'''+@tablename+'''=count(*)FROM'            +@tablename)      PRINT''  END  FE

10、TCHNEXTFROMtnames_cursorINTO@tablenameENDCLOSEtnames_cursorDEALLOCATEtnames_cursor附加:一个SQLServer存储过程循环的例子declareID_cursor  cursorforselect*from表名openID_cursor/*while@@fetch_status=0*/beginupdate表名set字段名='值'endcloseID_cursordeallocateID_cursorSQLServer中Procedu

11、re的写法(供参考)比较两个table,已有这条记录update,没有insert.Createprocedureupd_employeeasdeclare@emp_no  char(8)declare@namec  varchar(30)declare@orgchar(6)declare@emp_typechar(4)declare@linchar(4)declare@

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。