欢迎来到天天文库
浏览记录
ID:34759335
大小:64.18 KB
页数:4页
时间:2019-03-10
《存储过程中的循环语句》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
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@
此文档下载收益归作者所有