sql存储过程和触发器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例7.3:执行例7.1的存储过程。 exec proc_7_1
例7.4:执行例7.2的存储过程,查询学号为“02020101”学生的基本信息。 exec proc_7_2 ‘02020101’
或 exec proc_7_2 @sno= ‘02020101’
7.1.3 举例
例7.5:在学生成绩库中创建存储过程proc_7_t1,要求实现如下功能:产生 计算机0203班学生的选课情况列表,其中包括学号、姓名、性别、课程号、 课程名称、学分等。并调用此存储过程,显示执行结果。
create proc proc_7_t1 as Select xsqk.学号, 姓名, 性别, xskc.课程号, 课程名, xskc.学分
From xsqk, xscj, xskc Where xsqk.学号 = xscj.学号
and xscj.课程号Fra Baidu bibliotek= xskc.课程号 and 班级 = ‘计算机0203’
例7.6:在学生成绩库中创建存储过程proc_7_t2,要求实现如下功能:根 据学生学号,如果此学生存在,则产生该生的课程成绩列表,其中包括学 号、课程号、课程名称、成绩、学分等;如果此学生不存在,则显示“无 此学生!”。并调用此存储过程,显示“02020101”学生的课程成绩情况。
create proc proc_7_t2 @sno char(8) as if exists(select * from xsqk where 学号=@sno)
select * From xsqk where 学号= @sno Else
print ‘无此学号的学生!’
思考:创建存储过程testproc2,实现根据学生的学号,查询 此学生的学号、姓名、所选课程号、课程名、成绩及学分等信 息。
7.1.2 创建存储过程
说明: (1)在一个批处理中,Create procedure语句不能与其
他SQL语句合并在一起。 (2)数据库所有者具有默认的创建存储过程的权限。 (3)存储过程作为数据库对象其命名必须符合命名规
则。 (4)只能在当前数据库中创建属于当前数据库的存储过
程。 (5)一个存储过程的最大尺寸为128M。
7.1.3 执行存储过程
语句格式: EXECUTE 存储过程名称 参数值
7.1.2 创建存储过程
➢用企业管理器创建 ➢用T-SQL命令创建
存储过程的三个组成部分: (1)所有的输入参数以及传给调用者的输出参数; (2)被执行的针对数据库的操作语句,包括调用其他
存储过程的语句; (3)返回给调用者的状态值,以指明调用是成功还是
失败。
7.1.2 创建存储过程
T-SQL创建存储过程的基本语法格式: CREATE PROC[EDURE] 存储过程名称 参数定义 AS SQL语句 例7.1:创建存储过程,实现查询所有学生信息的功能。 Create proc proc_7_1 As Select * From xsqk 思考:创建存储过程,实现查询所有学生的学号、姓名、所选课程号、课 程名、成绩及学分信息的功能。
➢ 用户自定义存储过程 由用户创建并能完成某一特定功能的存储过程。或 称本地存储过程。包括临时存储过程、远程存储过 程、扩展存储过程。 临时存储过程又包括局部的和全局的临时存储过 程,前者在过程名的前面带#,后者在过程名的前面 带##。全局临时存储过程对所有用户都可见。 扩展存储过程的前缀是xp_ 。
第7章 存储过程和触发器
• 存储过程 • 触发器
7.1 存储过程
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中。 它的运行速度比独立运行同样的程序要快。
存储过程类型 创建存储过程 执行存储过程 修改存储过程 删除存储过程
7.1.1 存储过程类型
➢ 系统存储过程 存储在master数据库中,以sp_为前缀。可以在其他 数据库中对其进行调用。
7.2.1 触发器概述
➢ 触发器的概念及作用 触发器是一种特殊类型的存储过程,主要
Select 学号,xscj.课程号,课程名,成绩,xskc.学分 From xscj, xskc Where xscj.课程号=xskc.课程号 and 学号= @sno
else print ‘无此学生!’
7.1.4 修改存储过程
语法格式: ALTER PROCEDURE AS SQL语句
存储过程名称 参数定义
例7.7:修改在例7.5中已创建的存储过程proc_7_t1,要求在显示列中加 入成绩列。
alter proc proc_7_t1 as
Select xsqk.学号,姓名,性别,xskc.课程号, 课程名, xskc.学分, 成绩
From xsqk, xscj, xskc Where xsqk.学号 = xscj.学号
and xscj.课程号 = xskc.课程号 and 班级 = ‘计算机0203’
7.1.5 删除存储过程
语法格式: DROP PROC[EDURE] 存储过程名称 例7.8:删除存储过程proc_7_1。
drop proc proc_7_1 一般地,在用T-SQL命令创建存储过程时,总是先确定要创建的存储过程 是否已经存在,如果存在,那么就删除重建。我们可以用如下语句实现: If exists( select name from sysobjects
where name = ‘proc_7_1’ and type = ‘P’) drop proc proc_7_1
7.2 触发器
触发器是一种特殊类型的存储过程,当表中数据被修改时, SQL Server自动执行触发器中定义的T-SQL语句。使用触发器可 以实施更为复杂的数据完整性约束。
触发器概述 创建触发器 修改触发器 删除触发器
7.1.2 创建存储过程
例7.2:创建存储过程proc_7_2,要求实现根据学生学号,产生不同结果, 如果该学生信息不存在,则显示“无此学号的学生!”,否则返回该学生的 基本信息。 Create proc proc_7_2 @sno char(8) As If exists(Select * From xsqk where 学号= @sno)
相关文档
最新文档