流程控制语句
Transact-SQL提供称为控制流语言的特殊关键字,用于控制Transact-SQL语句、语句块和存储过程的执行流。
4.3.1流程控制语句
4.3.1.1 BEGIN…END语句
BEGIN…END语句用于将多个Transact-SQL语句组合为一个逻辑块。当流程控制语句必须执行一个包含两条或两条以上的T-SQL语句的语句块时,使用BEGIN…END语句。语法如下:
BEGIN
{sql_statement…}
END
其中,sql_statement是指包含的Transact-SQL语句。
BEGIN和END语句必须成对使用,任何一条语句均不能单独使用。BEGIN语句后为Transact-SQL语句块。最后,END语句行指示语句块结束。
4.3.1.2 IF判断
在SQL Server中为了控制程序的执行方向,也会像其他语言(如C语言)有顺序、选择和循环3种控制语句,其中IF就属于选择判断结构。IF结构的语法如下:
IF Boolean_expression
{sql_statement|statement_block}
其中Boolean_expression可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。其中命令行和程序块可以是合法Transact-SQL任意语句,但含两条或两条以上的语句的程序块必须加BEGIN…END子句
执行顺序是:遇到选择结构IF子句,先判断IF子句后的条件表达式,如果条件表达式的逻辑值是“真”,就执行后面的命令行或程序块,然后再执行IF结构下一条语句;如果条件式的逻辑值是“假”,就不执行后面的命令行或程序块,直接执行IF结构的下一条语句。
4.3.1.3 IF…ELSE选择
IF Boolean_expression
{sql_statement|statement_block}
Else
{sql_statement|statement_block}
如果逻辑判断表达式返回的结果是“真”,那么程序接下来会执行命令行1或程序块1;如果逻辑判断表达式返回的结果是“假”,那么程序接下来会执行命令行2或程序块2。无论哪种情况,最后都要执行IF…ELSE语句的下一条语句。
4.3.1.4 CASE语句
使用CASE语句可以很方便的实现多重选择的情况,比IF…THEN结构有更多的选择和判断的机会,可以避免编写多重的IF…THEN嵌套循环。
Transact-SQL支持CASE有两种语句格式。
简单CASE函数:
CASE input_expression
WHEN when_expression THEN result_expression
[ …n ]