Transact-SQL流程控制语句.ppt_第1页
Transact-SQL流程控制语句.ppt_第2页
Transact-SQL流程控制语句.ppt_第3页
Transact-SQL流程控制语句.ppt_第4页
Transact-SQL流程控制语句.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

Transact SQL 流控制语句 局部变量和全局变量 局部变量是在批或存储过程中声明使用的 全局变量是SQLServer提供的特殊函数 声明局部变量 declare 变量名数据类型 n 局部变量赋值 select 变量名 表达式set 变量名 表达式 程序控制语句 1BEGIN END语句相当于C语言中的大括号或复合语句 它将多条T SQL语句封装成为一个整体的语句块 通常把BEGIN END语句放在语句IF ElSE或者WHILE中 使其中的语句作为一个整体来执行 BEGINT SQL语句块ENDT SQL中可以使用嵌套的BEGIN END语句 2PRINT语句用于将用户定义的消息返回到客户端 PRINT 字符文本 local variable global variable string expr 3IF ELSE语句选择结构 用于进行条件判断 它可以进行批处理 存储过程或特殊查询 并且可以嵌套使用 IF布尔表达式 sql语句 语句块 ElSE sql语句 语句块 布尔表达式中可以含有select语句 必须用圆括号将select语句括起来 例 IF ELSE语句 if selectcount fromT opt T lessonwhereandT opt Lid T lesson Lidandlname 数据库原理 andscore0beginprint 数据库原理课程的分数低于80分 selects sid s sname o scorefromT studentsjoinT optgons sid o sidjoinT lessonlonl Lid o Lidwhereo score 80andl lname 数据库原理 endelseprint 数据库原理课程的分数均高于80分 4CASE语句多分支条件语句CASEWHEN条件1THEN值1WHEN条件2THEN值2 END 例 根据课时确定学分 declare lclassesintdeclare lgradeintset lclasses 64 select lclasses lclassesfromT lessonwhereLid 01 set lgrade casewhen lclasses 32then2when lclasses 64then4when lclasses 80then5endprint lgrade 例 根据成绩确定级别 selectSidas学号 level casewhenscore60andscore80then perfect endfromT optwhereLid 01 5WHILE语句条件循环语句 在满足条件时执行循环体 不满足条件时跳出循环结构 WHILE语句可以嵌套执行 WHILE布尔表达式 sql语句 语句块 CONTINUE语句 使程序跳过CONTINUE语句后面的语句 回到WHILE循环的第一行命令 BREAK语句 使程序完全跳出循环 结束WHILE语句的执行 例 打印从1到4这4个数字 declare iintset i 0while i 4 beginset i i 1print iend 打印乘法口诀表 declare iint jintset i 1set j 1while i 9 beginwhile j i beginprintstr i 2 str j 2 str i j 2 set j j 1endset i i 1set j 1end 6GOTO语句 移动到指定行 标号不能用数字定义 7RETURN语句 无条件地终止一个查询 存储过程或者批处理 位于RETURN语句之后的程序将不会被执行 打印数字11 declare var1intSET var1 1Here set var1 var1 1if var1 10beginprint var1returnendelsegotoHere 8WAITFOR语句指定触发语句块 存储过程或事务执行的时间 时间间隔或事件 WAITFORdelay 延迟 时间间隔 执行后面的语句WAITFORtime 指定语句执行的时间时间格式 hh mm ss 等待1小时零分零12秒后执行select语句WAITFORdelay 01 00 12 Select fromT student最长延迟时间24小时等到11点30分后才执行select语句WAITFORtime 11 30 00 Slect fromT student按datetime格式赋值 不能指定日期 游标 1定义定义一个游标标识名 并把游标标识名和一个查询语句关联起来 用DECLARE语句声明游标 通过SELECT查询定义游标存储的数据集合 语句格式为 DECLARE游标名称 INSENSITIVE SCROLL CURSORFORselect语句 FOR READONLY UPDATE OF列名字表 游标 参数说明 INSENSITIVE选项 说明所定义的游标使用SELECT语句查询结果的拷贝 对游标的操作都基于该拷贝进行 因此 这期间对游标基本表的数据修改不能反映到游标中 这种游标也不允许通过它修改基本表的数据 SCROLL选项 指定该游标可用所有的游标数据定位方法提取数据 游标定位方法包括PRIOR FIRST LAST ABSOLUTEn和RELATIVEn选项 游标 参数说明 Select语句 为标准的SELECT查询语句 其查询结果为游标的数据集合 构成游标数据集合的一个或多个表称作游标的基表 在游标声明语句中 有下列条件之一时 系统自动把游标定义为INSENSITIVE游标 SELECT语句中使用了DISTINCT UNION GROUPBY或HAVING等关键字 任一个游标基表中不存在唯一索引 READONLY选项 说明定义只读游标 UPDATE OF列名表 选项 定义游标可修改的列 如果使用OF列名表选项 说明只允许修改所指定的列 否则 所有列均可修改 游标 例如 定义游标TCURSOR 关联课程名字及相应选课的学生 declareTcursorcursorforselectk name sidfromcourse scorewherecourse kid score kid 游标 2打开打开游标语句执行游标定义中的查询语句 查询结果存放在游标缓冲区中 并使游标指针指向游标区中的第一个元组 作为游标的缺省访问位置 打开游标的语句格式 EXECSQLOPEN 游标名 如果打开的游标为INSENSITIVE游标 在打开时将产生一个临时表 将定义的游标数据集合从其基表中拷贝过来 游标 3读游标区中的元组FETCH NEXT PRIOR FIRST LAST ABSOLUTEn RELATIVEn FROM 游标名 INTO 变量1 变量2 游标 3读游标区中的元组NEXT 读取游标中的下一行 第一次对游标实行读取操作时 NEXT返回结果集合中的第一行 PRIOR FIRST LAST ABSOLUTEn和RELATIVEn选项只适用于SCROLL游标 它们分别说明读取游标中的上一行 第一行 最后一行 第n行和相对于当前位置的第n行 n为负值时 ABSOLUTEn和RELATIVEn说明读取从游标结果集合中的最后一行或当前行倒数n行的数据 INTO子句说明将读取的数据存放到指定的局部变量中 每一个变量的数据类型应与游标所返回的数据类型严格匹配 否则将产生错误 游标 4 利用游标修改数据通过游标修改或删除游标基表中的当前数据行 UPDATE语句的格式为 UPDATEtable nameSET列名 表达式 n WHERECURRENTOFcursor nameDELETE语句的格式为 DELETEFROMtable nameWHERECURRENTOFcursor name说明 CURRENTOFcursor name 表示当前游标指针所指的当前行数据 CURRENTOF只能在UPDATE和DELETE语句中使用 游标 5 关闭游标关闭游标后 游标区的数据不可再读 CLOSE语句关闭已打开的游标 之后不能对游标进行

温馨提示

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

评论

0/150

提交评论