存储过程、触发器和用户定义函数.ppt

存储过程、触发器和用户定义函数

第8章 存储过程、触发器和用户定义函数 8.1 流程控制语句 BEGIN ... ...END IF... ... ELSE CASE 语句 循环语句 流程控制语句(1) BEGIN … END语句 BEGIN … END语句能够将多个T-SQL语句组合成一个语句块,并将它们视为一个单元处理。其语句格式如下: BEGIN T-SQL 语句[, … n] [BEGIN … END[, … n]] END 在BEGIN…END语句中可以嵌套另外的BEGIN…END语句来定义另一语句块。 流程控制语句(2) IF … ELSE语句 IF 条件表达式 命令行或语句块 [ELSE [条件表达式] 命令行或语句块] 例8.1 在教学管理数据库中,如果“C4”号课程的平均成绩高于80分,则显示“C4号课程的平均成绩还不错”,否则显示“C4号课程的平均成绩一般”。 IF (SELECT AVG(GRADE) FROM SC WHERE CNO=C4)80 PRINT C4号课程的平均成绩还不错 ELSE PRINT C4号课程的平均成绩一般 流程控制语句(3) CASE语句 (1) 简单CASE语句: CASE 输入条件表达式 WHEN 条件表达式值1 THEN 返回表达式1 WHEN 条件表达式值2 THEN 返回表达式2 … [ELSE 返回表达式n] END 流程控制语句(4) (2) 搜索CASE语句 CASE WHEN 条件表达式值1 THEN 返回表达式1 WHEN 条件表达式值2 THEN 返回表达式2 … [ELSE 返回表达式n] END 例8.3在教学管理数据库中,显示学生“C1”课程的“成绩等级”。 SELECT SNAME AS 姓名, CASE WHEN GRADE=90 THEN 优秀 WHEN GRADE=80 THEN 良好‘ WHEN GRADE=70 THEN 中等 WHEN GRADE=60 THEN 及格 WHEN GRADE60 THEN 不及格 END AS 成绩等级 FROM S JOIN SC ON S.SNO=SC.SNO AND CNO=C1 流程控制语句(5) 循环语句 WHILE 条件表达式 BEGIN 命令行或语句块 [BREAK] ----断路 [CONTINUE] ----短路 命令行或语句块 END 流程控制语句(6) 例8.4 在教学管理数据库中,利用循环的PRINT语句输出S表中女同学的信息。 DECLARE @info VARCHAR(200) DECLARE @curs CURSOR SET @curs=CURSOR SCROLL DYNAMIC FOR SELECT 学号是:+SNO+;姓名是:+SNAME+;性别是:+SEX+;年龄是:+ convert(varchar(3),AGE)+系部是:+SDEPT FROM S WHERE SEX=F OPEN @curs FETCH NEXT FROM @curs INTO @info WHILE(@@fetch_status=0) --游标读取下一条数据成功。 BEGIN PRINT @info FETCH NEXT FROM @curs INTO @info END 流程控制语句(7) RETURN语句 使用RETURN语句,可以从查询或过程中无条件地退出,而不去执行位于RETURN之后的语句。语句格式为: RETURN [整形表达式] 其中,整形表达式为一个整型数值,是RETURN语句要返回的值。 该语句的含义是:向执行调用的过程或应用程序返回一个整数值。 注意:当用于存储过程时,不能返回空值。如果试图返回空值,将生成警告信息,并返回0值。 流程控制语句(2) 8.2 存储过程 主要内容 存储过程概述 创建存储过程 调用存储过程 管理存储过程 存储过程的分类(1) SQL Server 支持的存储过程可分为5类:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。 (1)系统存储过程。系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。系统存储过程定义在系统数据库master中,其前缀是sp_,它们为检索系统表的信息提供了方便快捷的方法。 (2)用户存储过程。本地存储过程

文档评论(0)

1亿VIP精品文档

相关文档