1、流程控制语句流程控制语句1ppt课件变量SQL Server的变量分为两种:的变量分为两种:用户自己定义的用户自己定义的局部变量局部变量 开头的标识符表示局部变量开头的标识符表示局部变量系统定义和维护的系统定义和维护的全局变量全局变量 开头的标识符表示全局变量开头的标识符表示全局变量2ppt课件 局部变量局部变量的作用范围:局部变量的作用范围:定义局部变量的定义局部变量的批处理批处理、存储过程、触发器或语句块。存储过程、触发器或语句块。1. 局部变量的定义局部变量的定义DECLARE 局部变量名局部变量名 数据类型数据类型 ,n注意注意:变量不能是:变量不能是text、ntext或或image
2、数据类型数据类型。3ppt课件例:定义变量例:定义变量sname为为nvarchar(10)类型,类型,定义变量定义变量snum为为int类型类型例:定义变量例:定义变量snum为为int类型:类型:DECLARE snum intDECLARE sname nvarchar(10),snum int不能有空格不能有空格4ppt课件(1)用)用SET语句给局部变量赋值语句给局部变量赋值 SET 局部变量名局部变量名 = 变量值变量值(2)在查询语句在查询语句SELECT中给局部变量赋值中给局部变量赋值 SELECT局部变量名局部变量名 = 变量值变量值,n2 2. . 局部变量的赋值局部变量的
3、赋值局部变量在赋值之前,默认为局部变量在赋值之前,默认为NULL。如果在程序中引用它,必须要先为其赋值。如果在程序中引用它,必须要先为其赋值。P1365ppt课件3. 局部变量的局部变量的输出输出PRINT局部变量局部变量注:变量的输出仅用于注:变量的输出仅用于DBA调试时使用。调试时使用。6ppt课件T-SQL也提供了用于编写过程性代码的语法结构,也提供了用于编写过程性代码的语法结构,可用于进行顺序、分支、循环等程序设计。可用于进行顺序、分支、循环等程序设计。控制流语句控制流语句说明说明BEGINEND程序块语句程序块语句IFELSE条件处理语句条件处理语句CASE分支语句分支语句WHILE
4、循环语句循环语句GOTO无条件跳转语句无条件跳转语句RETURN无条件退出语句无条件退出语句WAITFOR延迟语句延迟语句BREAK跳出循环语句跳出循环语句CONTINUE跳出本次循环语句跳出本次循环语句7ppt课件BEGINEND语句块的界定,相当于语句块的界定,相当于C语言中的语言中的“ ”BEGIN sql_statement | statement_block END注意:注意:BEGIN 和和 END 语句必须成对使用语句必须成对使用P1458ppt课件IFELSEIF Boolean_expression sql_statement | statement_block ELSE s
5、ql_statement | statement_block DECLARE x int, y intSET x=1SET y=4IF xy PRINT xyELSE PRINT x80 PRINT成绩不错成绩不错ELSE PRINT需要继续努力需要继续努力3-105的平均成绩的平均成绩80如果布尔表达式中含有如果布尔表达式中含有 SELECT 语句,必须用圆括号将语句,必须用圆括号将 SELECT 语句括起来语句括起来10ppt课件练习:判断练习:判断“陆君陆君”是否在是否在95033班,如果在输出班,如果在输出”陆陆君在君在95033班班”否则输出否则输出“陆君不在陆君不在95033班班”
6、USE SchoolIF EXISTS (SELECT * FROM Student WHERE Sname=陆君陆君 AND Class=95033) PRINT 陆君在陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班陆君在陆君在95033班班11ppt课件练习:判断练习:判断“陆君陆君”是否在是否在95033班,如果在输出班,如果在输出”陆君在陆君在95033班班”否则输出否则输出“陆君不在陆君不在95033班班”USE SchoolGOIF 陆君陆君 in(SELECT Sname FROM Student WHERE Class=95033) PRINT 陆君在
7、陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班12ppt课件练习:判断练习:判断“陆君陆君”是否在是否在95033班,如果班,如果在输出在输出”陆君在陆君在95033班班”否则输出否则输出“陆君陆君不在不在95033班班”USE SchoolIF 95033=(SELECT Class FROM Student WHERE Sname=陆君陆君) PRINT 陆君在陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班13ppt课件多条件分支选择多条件分支选择 CASE(1)简单表达式)简单表达式CASE input_expression WHEN
8、THEN .n ELSE END2)选择表达式)选择表达式CASE WHEN THEN .n ELSE ENDCASE具有以下两种格式:具有以下两种格式:(1)简单表达式简单表达式,将某个表达式与一组简单表达式进行比较,将某个表达式与一组简单表达式进行比较以确定结果。以确定结果。(2)选择表达式选择表达式,计算一组布尔表达式以确定结果。,计算一组布尔表达式以确定结果。14ppt课件例:用例:用CASE语句,根据教师的职称来分级语句,根据教师的职称来分级 USE SchoolSELECT Tname,depart, CASE Prof WHEN 教授教授THEN 高级职称高级职称 WHEN 副教
9、授副教授THEN 高级职称高级职称 WHEN 讲师讲师THEN 中级职称中级职称 WHEN 助教助教THEN 初级职称初级职称 ELSE 无职称无职称 ENDFROM Teacher只做临时只做临时显示,并显示,并不对表进不对表进行修改行修改15ppt课件例:利用例:利用CASE语句对学生的成绩进行评价语句对学生的成绩进行评价USE SchoolSELECT Sno,Cno,CASE WHEN Degree=90 THEN A WHEN Degree=80 THEN B WHEN Degree=70 THEN C WHEN Degree=60 THEN D ELSE E END AS Rank
10、FROM ScoreORDER BY Sno16ppt课件循环语句 WHILEWHILE Boolean_expression sql_statement | statement_block BREAK -跳出本层循环跳出本层循环 sql_statement | statement_block CONTINUE -跳出本次循环跳出本次循环 sql_statement | statement_block -布尔表达式,进行条件判断布尔表达式,进行条件判断17ppt课件练习:计算从练习:计算从1加到加到100并输出结果。并输出结果。DECLARE sum100 int, i intSET sum1
11、00=0SET i=0WHILE i=100 BEGIN SET sum100=sum100+i SET i=i+1 ENDPRINT sum10018ppt课件下列语句实现的什么功能下列语句实现的什么功能WHILE( SELECT AVG(Degree) FROM Score WHERE Cno=3-105 )=100 BREAKENDSELECT * FROM Score WHERE Cno=3-105 -计算计算3-105课的平均成绩课的平均成绩-将将3-105课的成绩提高课的成绩提高5分分/*如果如果3-105课的最高成绩课的最高成绩大于大于100分则跳出循环分则跳出循环*/19ppt
12、课件跳转语句 GOTOGOTO语句将程序无条件地转到相应的语句将程序无条件地转到相应的标签标签的语句。的语句。DECLARE sum100 int,i intSELECT sum100=0,i=0My_Loop: SET sum100=sum100+iSET i=i+1IF i=100 GOTO My_LoopPRINT sum100标签要符合命名规则,并且有标签要符合命名规则,并且有“:”不利于程序阅读,不不利于程序阅读,不符合结构化程序的三符合结构化程序的三种思想,因此不提倡种思想,因此不提倡用用GOTO语句语句20ppt课件延时语句 WAITFOR WAITFOR语句可以将它之后的语句在
13、一个指定的时语句可以将它之后的语句在一个指定的时间间隔之后执行,或在未来的某一指定时间执行。间间隔之后执行,或在未来的某一指定时间执行。WAITFOR DELAY 延时时间延时时间 | TIME 到达时间到达时间 WAITFOR DELAY 0:00:05PRINT 时间到!时间到!WAITFOR TIME 20:00:00PRINT 下课喽下课喽!-五秒钟后显示五秒钟后显示“时间到!时间到!”必须是必须是datetime数据类型,数据类型,但不能包含日期部分但不能包含日期部分必须是必须是datetime数据类型,数据类型,但不能包含日期部分但不能包含日期部分不超过不超过24小时小时21ppt
14、课件函数 P1511.1.字符串函数字符串函数2.2.日期和时间函数日期和时间函数3.3.数学函数数学函数4.4.系统函数系统函数22ppt课件批处理批处理批处理是包含一个或多个是包含一个或多个T-SQL语句的组,从应用语句的组,从应用程序一次性地发送到程序一次性地发送到SQL Server执行。执行。GO是一个批处理的结束语句。是一个批处理的结束语句。1.GO不是不是T-SQL语句,但是可以被查询分析器识别。语句,但是可以被查询分析器识别。2.GO 命令和命令和Transact-SQL 语句不可在同一行上。语句不可在同一行上。但在但在 GO 命令行中可包含注释。命令行中可包含注释。P14323ppt课件