SQL SERVER:流程控制语句之—While及退出循环关键字(33)

一、循环结构:WHILE,根据某些条件,重复执行一条T-SQL语句或语句块。

1、语法:

WHILE (条件)

BEGIN

语句块

END

2、例:

1)求1-100的累加

DECLARE @X INT=1,@SUM INT =0
WHILE @X<=100
  BEGIN
  	SET @SUM=@SUM+@X
  	SET @X=@X+1
  END
PRINT '1-100的累计结果为:'+CONVERT(VARCHAR(20),@SUM)--结果为5050
GO

二、退出循环关键字:CONTINUE、BREAK、RETURN

1、CONTINUE:可以让程序跳过CONTINUE关键字之后的语句不执行,回到WHILE循环的第一行命令;

例:求1-100之间的奇数和

DECLARE @X INT,@SUM INT
SELECT @X=1,@SUM=0
WHILE @X<=100
  BEGIN
    IF @X % 2=1
      BEGIN
        SET @SUM=@SUM+@X--为奇数,则累加
        SET @X=@X+1
      END
    ELSE
      BEGIN
        SET @X=@X+1
        CONTINUE----不为奇数,则不执行后面的语句,直接跳到WHILE的第一行命令
      END
  END
PRINT '1-100的奇数和:'+CONVERT(VARCHAR(100),@SUM)
GO--返回的结果为2500

2、BREAK:让程序完全跳出循环,结束WHILE循环的;

例:当@X=20 时,退出循环,并求@SUM的和

DECLARE @X INT=1,@SUM INT =0
WHILE @X<=100
  BEGIN
    IF @X=20
      BEGIN
      	BREAK--当@X=20时,直接退出WHILE循环
      END
    ELSE
      BEGIN
        SET @SUM=@SUM+@X
        SET @X=@X+1
      END
  END
PRINT '@SUM的值为:'+CAST(@SUM AS VARCHAR(20))
GO

3、RETURN:从查询或过程中无条件退出,RETURE语句可在任何时候用于从过程,批处理或语句块中退出,位于RETURN之后的语句不会被执行。

例:当@X=20 时,退出循环,并打印@SUM的和

DECLARE @X INT=1,@SUM INT =0
WHILE @X<=100
  BEGIN
    IF @X=20
      BEGIN
      	RETURN--当@X=20时,直接退出WHILE循环,并且不执行后面的所有语句,包括PRINT语句
      END
    ELSE
      BEGIN
        SET @SUM=@SUM+@X
        SET @X=@X+1
      END
  END
PRINT '@SUM的值为:'+CAST(@SUM AS VARCHAR(20))
--此句无法输出,即当遇到RETURN时,后面的语句都不执行,即使是未在循环语句,但在批处理
--内也不执行
GO

三、综合应用:九九乘法表

效果图

DECLARE @X INT=1--用于行
DECLARE @Y INT=1--用于列
DECLARE @Str VARCHAR(200)=''
PRINT '.........................九九乘法表..............................'+CHAR(10)
WHILE @X<=9
  BEGIN
    WHILE @Y<=@X
      BEGIN
        SET @Str=@Str+CAST(@X AS VARCHAR(2))+'×'+CAST(@Y AS VARCHAR(2))
          +'='+CONVERT(VARCHAR(100),@X*@Y)+' '
        SET @Y=@Y+1
      END
    SET @X=@X+1
    SET @Y=1
    PRINT @Str
    SET @Str=''
  END
GO
举报
评论 0