SQL流程控制语句_第1页
SQL流程控制语句_第2页
SQL流程控制语句_第3页
SQL流程控制语句_第4页
SQL流程控制语句_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、流程控制语句流程控制语句变量SQL Server的变量分为两种:的变量分为两种:用户自己定义的用户自己定义的局部变量局部变量 开头的标识符表示局部变量开头的标识符表示局部变量系统定义和维护的系统定义和维护的全局变量全局变量 开头的标识符表示全局变量开头的标识符表示全局变量 局部变量局部变量的作用范围:局部变量的作用范围:定义局部变量的批处理、定义局部变量的批处理、存储过程、触发器或语句块。存储过程、触发器或语句块。1. 局部变量的定义局部变量的定义DECLARE 局部变量名局部变量名 数据类型数据类型 ,n注意注意:变量不能是:变量不能是text、ntext或或image数据类型数据类型。例:

2、定义变量例:定义变量sname为为nvarchar(10)类型,类型,定义变量定义变量snum为为int类型类型例:定义变量例:定义变量snum为为int类型:类型:DECLARE snum intDECLARE sname nvarchar(10),snum int不能有空格不能有空格(1)用)用SET语句给局部变量赋值语句给局部变量赋值 SET 局部变量名局部变量名 = 变量值变量值(2)在查询语句)在查询语句SELECT中给局部变量赋值中给局部变量赋值 SELECT局部变量名局部变量名 = 变量值变量值,n2. 2. 局部变量的赋值局部变量的赋值局部变量在赋值之前,默认为局部变量在赋值之

3、前,默认为NULL。如果在程序中引用它,必须要先为其赋值。如果在程序中引用它,必须要先为其赋值。P1363. 局部变量的输出局部变量的输出PRINT局部变量局部变量注:变量的输出仅用于注:变量的输出仅用于DBA调试时使用。调试时使用。T-SQL也提供了用于编写过程性代码的语法结构,也提供了用于编写过程性代码的语法结构,可用于进行顺序、分支、循环等程序设计。可用于进行顺序、分支、循环等程序设计。控制流语句控制流语句说明说明BEGINEND程序块语句程序块语句IFELSE条件处理语句条件处理语句CASE分支语句分支语句WHILE循环语句循环语句GOTO无条件跳转语句无条件跳转语句RETURN无条件

4、退出语句无条件退出语句WAITFOR延迟语句延迟语句BREAK跳出循环语句跳出循环语句CONTINUE跳出本次循环语句跳出本次循环语句BEGINEND语句块的界定,相当于语句块的界定,相当于C语言中的语言中的“ ”BEGIN sql_statement | statement_block END注意:注意:BEGIN 和和 END 语句必须成对使用语句必须成对使用P145IFELSEIF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block DECLARE x int, y

5、 intSET x=1SET y=4IF xy PRINT xyELSE PRINT x80 PRINT成绩不错成绩不错ELSE PRINT需要继续努力需要继续努力3-105的平均成绩的平均成绩80如果布尔表达式中含有如果布尔表达式中含有 SELECT 语句,必须用圆括号将语句,必须用圆括号将 SELECT 语句括起来语句括起来练习:判断练习:判断“陆君陆君”是否在是否在95033班,如果在输出班,如果在输出”陆陆君在君在95033班班”否则输出否则输出“陆君不在陆君不在95033班班”USE SchoolIF EXISTS (SELECT * FROM Student WHERE Sname

6、=陆君陆君 AND Class=95033) PRINT 陆君在陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班陆君在陆君在95033班班练习:判断练习:判断“陆君陆君”是否在是否在95033班,如果在输出班,如果在输出”陆君在陆君在95033班班”否则输出否则输出“陆君不在陆君不在95033班班”USE SchoolGOIF 陆君陆君 in(SELECT Sname FROM Student WHERE Class=95033) PRINT 陆君在陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班练习:判断练习:判断“陆君陆君”是否在是否在950

7、33班,如果班,如果在输出在输出”陆君在陆君在95033班班”否则输出否则输出“陆君陆君不在不在95033班班”USE SchoolIF 95033=(SELECT Class FROM Student WHERE Sname=陆君陆君) PRINT 陆君在陆君在95033班班ELSE PRINT 陆君不在陆君不在95033班班多条件分支选择多条件分支选择 CASE(1)简单表达式)简单表达式CASE input_expression WHEN THEN .n ELSE END2)选择表达式)选择表达式CASE WHEN THEN .n ELSE ENDCASE具有以下两种格式:具有以下两种格

8、式:(1)简单表达式简单表达式,将某个表达式与一组简单表达式进行比较,将某个表达式与一组简单表达式进行比较以确定结果。以确定结果。(2)选择表达式选择表达式,计算一组布尔表达式以确定结果。,计算一组布尔表达式以确定结果。例:用例:用CASE语句,根据教师的职称来分级语句,根据教师的职称来分级 USE SchoolSELECT Tname,depart, CASE Prof WHEN 教授教授THEN 高级职称高级职称 WHEN 副教授副教授THEN 高级职称高级职称 WHEN 讲师讲师THEN 中级职称中级职称 WHEN 助教助教THEN 初级职称初级职称 ELSE 无职称无职称 ENDFRO

9、M Teacher只做临时只做临时显示,并显示,并不对表进不对表进行修改行修改例:利用例:利用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 RankFROM ScoreORDER BY Sno循环语句 WHILEWHILE Boolean_expression sql_statement | statement_block

10、BREAK -跳出本层循环跳出本层循环 sql_statement | statement_block CONTINUE -跳出本次循环跳出本次循环 sql_statement | statement_block -布尔表达式,进行条件判断布尔表达式,进行条件判断练习:计算从练习:计算从1加到加到100并输出结果。并输出结果。DECLARE sum100 int, i intSET sum100=0SET i=0WHILE i=100 BEGIN SET sum100=sum100+i SET i=i+1 ENDPRINT sum100下列语句实现的什么功能下列语句实现的什么功能WHILE(

11、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分则跳出循环分则跳出循环*/跳转语句 GOTOGOTO语句将程序无条件地转到相应的语句将程序无条件地转到相应的标签标签的语句。的语句。DECLARE sum100 int,i intSELECT sum100=0,i=0My_Loop: SET sum100

12、=sum100+iSET i=i+1IF i=100 GOTO My_LoopPRINT sum100标签要符合命名规则,并且有标签要符合命名规则,并且有“:”不利于程序阅读,不不利于程序阅读,不符合结构化程序的三符合结构化程序的三种思想,因此不提倡种思想,因此不提倡用用GOTO语句语句延时语句 WAITFOR WAITFOR语句可以将它之后的语句在一个指定的时语句可以将它之后的语句在一个指定的时间间隔之后执行,或在未来的某一指定时间执行。间间隔之后执行,或在未来的某一指定时间执行。WAITFOR DELAY 延时时间延时时间 | TIME 到达时间到达时间 WAITFOR DELAY 0:00:05PRINT 时间到!时间到!WAITFOR TIME 20:00:00PRINT 下课喽下课喽!-五秒钟后显示五秒钟后显示“时间到!时间到!”必须是必须是datetime数据类型,数据类型,但不能包含日期部分但不能包含日期部分必须是必须是datetime数据类型,数据类型,但不能包含日期部分但不能包含日期部分不超过不超过24小时小时函数 P1511.1.字符串函数字符串函数2.2.日期和时间函数日期和时间函数3.3.数学函数数学函数4.4.系统函数系统函数批处理批处理批处理是包含一个或多个是包含一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论