【精选资料】实训4存储过程和触发器

实训4:存储过程和触发器

一、 实训目的

1、了解存储过程、触发器的概念。

2、会运用T-SQL语句创建存储过程、触发器。 2、掌握如何调用存储过程。

二、实训工具及设备

1、 实训软件:SQL Server。

2、 实训设备:安装Windows系统计算机一台。

三、实训预备知识

1、存储过程

我们曾经学习过C语言的函数,使用函数时需要两步。第一步:定义函数,它允许包含参数和返回值。第二步:调用函数。函数可以反复的调用,它方便了程序的模块化设计,大大提高了执行效率。

存储过程类似于C语言中的函数,它是存储在SQL SERVER服务器中的一组预编译过的SQL语句,当第一次调用以后,就驻留在内存中,以后调用时不必再进行编译,因此它的运行速度比独立运行同样的程序要快。

在SQL SERVER中存储过程分为两类:系统存储过程和用户自定义存储过程。系统存储过程存储在master数据库中并以sp_为前缀(用户创建存储过程的时候不要以sp_为前缀),在任何数据库中都可以调用系统存储过程。除了使用系统存储过程,用户还可以创建自己的存储过程。当创建存储过程时,需要确定存储过程的三个组成部分:

? 所有的输入参数及执行后的输出结果(返回值);

? 被执行的针对数据库操作语句,包括调用其他存储过程的语句; ? 返回给调用者的状态值,以指明调用是否成功。

使用T-SQL语句创建存储过程的语法格式如下: CREATE PROCEDUER 存储过程名

[@参数1 参数的数据类型][=默认值] [OUTPUT], ……

[@参数n 参数的数据类型][=默认值] [OUTPUT] AS SQL语句

其中:使用OUTPUT选项可将@参数的值返回给调用语句。 (1)创建不带参数的存储过程

代码清单4-1:在选课系统(ElectiveSystem)数据库中创建每门选修课的平均分 use ElectiveSystem go

create procedure proc_courseAvg as

select courseName,avg(grade) as '平均成绩' from course,sc

where course.courseNo=sc.courseNo group by course.courseName go

在查询分析器中调用存储过程proc_courseAvg,结果如下图4-1所示。 (2)创建带参数的存储过程

代码清单4-2:创建某个系部每门选修课的平均成绩,其中输入参数为系部名称 use ElectiveSystem

go

create procedure proc_courseDeptAvg @name nvarchar(32) as

select deptName, courseName, avg(grade) as '平均成绩' from deptInfo, studentInfo, course, sc where deptInfo.deptName=@name and deptInfo.deptNo=studentInfo.deptNo and studentInfo.stuNo=sc.stuNo and course.courseNo=sc.courseNo

group by deptInfo.deptName,course.courseName go

在查询分析器中调用存储过程proc_courseDeptAvg,结果如下图4-2所示。

图4-1:调用存储过程proc_courseAvg

图4-2:调用存储过程proc_courseDeptAvg

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4