CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

循环语句的语法是什么?

楼主jiyanchn()2006-12-01 11:39:58 在 MS-SQL Server / 疑难问题 提问

多谢指教!! 问题点数:20、回复次数:1Top

1 楼tanqimin(厨师卡尔)回复于 2006-12-01 11:47:25 得分 0

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_block}  
   
  Transact-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   pubs  
  GO  
  WHILE   (SELECT   AVG(price)   FROM   titles)   <   $30  
  BEGIN  
        UPDATE   titles  
              SET   price   =   price   *   2  
        SELECT   MAX(price)   FROM   titles  
        IF   (SELECT   MAX(price)   FROM   titles)   >   $50  
              BREAK  
        ELSE  
              CONTINUE  
  END  
  PRINT   'Too   much   for   the   market   to   bear'  
   
  B.   在带有游标的过程中使用   WHILE  
  以下的   WHILE   结构是名为   count_all_rows   过程中的一部分。下例中,该   WHILE   结构测试用于游标的函数   @@FETCH_STATUS   的返回值。因为   @@FETCH_STATUS   可能返回   –2、-1   或   0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取   (0)   后将执行   BEGIN...END   循环内部的   SELECT   语句。  
   
  USE   pubs  
  DECLARE   tnames_cursor   CURSOR  
  FOR  
        SELECT   TABLE_NAME    
        FROM   INFORMATION_SCHEMA.TABLES  
  OPEN   tnames_cursor  
  DECLARE   @tablename   sysname  
  --SET   @tablename   =   'authors'  
  FETCH   NEXT   FROM   tnames_cursor   INTO   @tablename  
  WHILE   (@@FETCH_STATUS   <>   -1)  
  BEGIN  
        IF   (@@FETCH_STATUS   <>   -2)  
        BEGIN        
              SELECT   @tablename   =   RTRIM(@tablename)    
              EXEC   ('SELECT   '''   +   @tablename   +   '''   =   count(*)   FROM   '    
                          +   @tablename   )  
              PRINT   '   '  
        END  
        FETCH   NEXT   FROM   tnames_cursor   INTO   @tablename  
  END  
  CLOSE   tnames_cursor  
  DEALLOCATE   tnames_cursor  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:jiyanchn

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo