SQL Server学习之路(十五)

流程控制是一般开发工具里必备的功能,今天我们来讲讲SQL Server里的流程控制。其中包含IF...ELSE,WHILE

1、IF...ELSE流程控制元素

IF...ELSE元素用于根据条件来控制代码的执行流程。如果条件取值为TRUE,则执行指定的语言和语句块:如果条件取值为FALSE或UNKNOWN,则执行指定的另一语句或语句块。

例如,以下代码检查今天是否是一年的最后一天,如果是,代码打印输出消息,说今天是一年的最后一天,如果不是,则打印输出消息说今天不是一年的最后一天:

IF YEAR(CURRENT_TIMESTAMP)<>YEAR(DATEADD(DAY,1,CURRENT_TIMESTAMP))

    PRINT '今天是一年的最后一天'

ELSE

    PRINT '今天不是一年的最后一天'

注:其中的YEAR是函数,CURRENT_TIMESTAMP是当前时间,具体到豪秒

如果需要控制的流程分支超过两个,则可以使用嵌套的IF...ELSE元素。例如:

a、今天是一年的最后一天。

b、今天是一个月的最后一天,但不是一年的最后一天。

c、今天不是一个月的最后一天。

IF YEAR(CURRENT_TIMESTAMP) <> YEAR(DATEADD(DAY,1,CURRENT_TIMESTAMP))

    PRINT '今天是一年的最后一天。'

ELSE

    IF MONTH(CURRENT_TIMESTAMP) <> MONTH(DATEADD(DAY,1,CURRENT_TIMESTAMP))

        PRINT '今天是一个月的最后一天,但不是一年的最后一天。'

    ELSE

        PRINT '今天不是一个月的最后一天。'

2、WHILE流程控制元素

当在WHILE关键字后指定的条件为TRUE时,WHILE元素可以重复执行一条语句或语句块,当指定的条件取值为FALSE或UNKNOWN时,循环将会终止。

例如,编写一个执行10次的循环:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

    PRINT @i;

    SET @i = @i +1;

END;

代码先声明一个计数器变量@i,并初始化为1,接着只要变量的值小于10就一直循环,在每次循环中,循环体中的代码打印变量@i的值,接着把它的值增加1.结果可以自行执行一下。

如果想在循环内某处退出当前循环,继续执行循环体之后的语句,可以使用BREAK语句。例如,当变量@i等于6时,就退出循环:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

    IF @i = 6 BREAK;

    PRINT @i;

    SET @i = @i +1;

END;

如果想在循环体内某处忽略当前循环的剩余处理,继续进行下一次循环,可以使用CONTINUE命令,例如,在第6次进入循环体时,忽略从IF语句之后直到循环体结束之前出现的其他操作:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

    SET @i = @i +1;

    IF @i = 6 CONTINUE;

    PRINT @i;    

END;

T-SQL中的8个流程控制语句关键字

    在T-SQL中,与流程控制语句相关的关键字有8个:

SQL Server学习之路(十五)其中的 GOTO ,WAITFOR不常用,就不讲解了,有兴趣的可以去搜索一下这两个的用法,今天的流程控制就介绍到这里了,希望能帮助到大家~

 

上一篇:SQL基础知识普及(一)——SELECT


下一篇:SQL Server学习之路(十八)