数据库 T-SQL流控制语句3 MSSQL 学习笔记4
Transact-SQL提供称为控制流语言的特殊关键字,用于控制Transact-SQL语句、语句块和存储过程的执行流。
4.3.1流程控制语句 4.3.1.1 BEGIN…END语句
BEGIN…END语句用于将多个
流程控制语句 Transact-SQL提供称为控制流语言的特殊关键字,用于控制Transact-SQL语句、语句块和存储过程的执行流。 4.3.1流程控制语句 4.3.1.1 BEGIN…END语句 BEGIN…END语句用于将多个Transact-SQL语句组合为一个逻辑块。当流程控制语句必须执行一个包含两条或两条以上的T-SQL语句的语句块时,使用BEGIN…END语句。语法如下:
其中,sql_statement是指包含的Transact-SQL语句。 BEGIN和END语句必须成对使用,任何一条语句均不能单独使用。BEGIN语句后为Transact-SQL语句块。最后,END语句行指示语句块结束。 4.3.1.2 IF判断 在SQL Server中为了控制程序的执行方向,也会像其他语言(如C语言)有顺序、选择和循环3种控制语句,其中IF就属于选择判断结构。IF结构的语法如下:
其中Boolean_expression可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。其中命令行和程序块可以是合法Transact-SQL任意语句,但含两条或两条以上的语句的程序块必须加BEGIN…END子句 执行顺序是:遇到选择结构IF子句,先判断IF子句后的条件表达式,如果条件表达式的逻辑值是“真”,就执行后面的命令行或程序块,然后再执行IF结构下一条语句;如果条件式的逻辑值是“假”,就不执行后面的命令行或程序块,直接执行IF结构的下一条语句。 4.3.1.3 IF…ELSE选择
如果逻辑判断表达式返回的结果是“真”,那么程序接下来会执行命令行1或程序块1;如果逻辑判断表达式返回的结果是“假”,那么程序接下来会执行命令行2或程序块2。无论哪种情况,最后都要执行IF…ELSE语句的下一条语句。 4.3.1.4 CASE语句 使用CASE语句可以很方便的实现多重选择的情况,比IF…THEN结构有更多的选择和判断的机会,可以避免编写多重的IF…THEN嵌套循环。 Transact-SQL支持CASE有两种语句格式。 简单CASE函数:
参数说明: input_expression:使用简单CASE格式时所计算的表达式。input_expression是任何有效的Microsoft? SQL Server?表达式。 WHEN when_expression:使用简单CASE格式时input_expression所比较的简单表达式。when_expression是任意有效的SQL Server表达式。input_expression和每个when_expression的数据类型必须相同,或者是隐性转换。 n:占位符,表明可以使用多个WHEN when_expression THEN result_expression子句或WHEN Boolean_expression THEN result_expression子句。 THEN result_expression:当input_expression = when_expression取值为TRUE,或者Boolean_expression取值为TRUE时返回的表达式。result_expression是任意有效的SQL Server表达式。 ELSE else_result_expression:当比较运算取值不为TRUE时返回的表达式。如果省略此参数并且比较运算取值不为TRUE,CASE将返回NULL值。else_result_expression是任意有效的SQL Server 表达式。else_result_expression和所有result_expression的数据类型必须相同,或者必须是隐性转换。 WHEN Boolean_expression:使用CASE搜索格式时所计算的布尔表达式。Boolean_expression是任意有效的布尔表达式。 下面介绍简单CASE函数和CASE搜索函数两种格式的执行顺序。 简单CASE函数: (1)计算input_expression,然后按指定顺序对每个WHEN子句的input_expression = when_expression进行计算。 (2)返回第一个取值为TRUE的(input_expression = when_expression)的result_expression。 (3)如果没有取值为TRUE的input_expression = when_expressionMssql基本语句,则当指定ELSE子句时,SQL Server将返回else_result_expression;若没有指定ELSE子句,则返回NULL值。
4.3.1.5 WHILE循环 WHILE子句是T-SQL语句支持的循环结构。在条件为真的情况下,WHILE子句可以循环地执行其后的一条T-SQL命令。如果想循环执行一组命令,则需要使用BEGIN…END子句。
遇到WHILE子句,先判断条件表达式的值,当条件表达式的值为“真”时,执行循环体中的命令行或程序块,遇到END子句会自动地再次判断条件表达式值的真假,决定是否执行循环体中的语句。只能当条件表达式的值为“假”时,才结束执行循环体的语句。 4.3.1.6 CONTINUE和BREAK 循环结构WHILE子句还可以用CONTINUE和BREAK命令控制WHILE循环中语句的执行。 语法:
CONTINUTE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行命令。 BREAK命令则让程序完全跳出循环,结束WHILE命令的执行。 4.3.1.7 RETURN退出 RETURN语句用于从查询过程中无条件退出。RETURN语句可在任何时候用于从过程、批处理或语句块中退出。位于RETURN之后的语句不会被执行。 语法:
在括号内可指定一个返回值。如果没有指定返回值,SQL Server系统会根据程序执行的结果返回一个内定值。 4.3.1.8 GOTO跳转 GOTO命令用来改变程序执行的流程,使程序跳到标识符指定的程序行再继续往下执行。
4.3.1.9 WAITFOR挂起 WAITFOR指定触发器、存储过程或事务执行的时间、时间间隔或事件;还可以用来暂时停止程序的执行,直到所设定的等待时间已过才继续往下执行。 语法:
其中“时间”必须为DATETIME类型的数据,如“12:23:47”,但不能包括日期。各关键字含义如下: DELAY:用来设定等待的时间,最多可达24小时。 TIME:用来设定等待结束的时间点。 看完不点赞,快乐少一半 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |