SQL存储过程与触发器.ppt
《SQL存储过程与触发器.ppt》由会员分享,可在线阅读,更多相关《SQL存储过程与触发器.ppt(40页珍藏版)》请在三一办公上搜索。
1、存储过程与触发器,存储过程,一、存储过程的特点在大型数据库应用中,随着功能的不断完善,整个系统也越来越复杂。大量的情况是许多SQL语句代码被许多次反复使用,如果每一次使用都输入相同的代码,效率会很低。数据库管理系统提供了一种方法,可以把一组常用的SQL语句集中起来,编译成可执行代码,存储在数据库服务器上,这样可以方便完成特定任务,这种方法就是存储过程。,存储过程是SQL语句和流程控制语句的集合,以一个名字保存,并作为一个单元来处理。存储过程是数据库中的一个独立的对象,保存在数据库中,可以由应用程序来调用执行,大大简化应用程序的开发,因此是SQL服务器端开发的主要手段之一。如果不使用存储过程,那
2、么当客户端输入SQL语句之后,它会发送到数据库服务器,由服务器进行下列操作:语法分析:检查所输入的SQL语句,例如关键字拼写是否正确。,语义检查:检查SQL语句中所涉及的表、列是否存在。优化分析:选择如何把数据从磁盘调入内存快速获取数据行的方法。可执行代码:一组由数据库服务器解释执行的代码。当同样的SQL再次执行时,则需要重新进行前面4个步骤。这样的操作浪费了时间和空间、降低了数据库服务器的效率。如果使用了存储过程,当再次执行前面的SQL语句时,不再需要执行语法分析、语义检查和优化分析,直接调用以前生成好,的可执行代码,显然这样的执行效率要高。存储过程具有以下特点:具有立即访问数据库的能力。它
3、是数据库服务器端的执行代码,在服务器端执行操作,减少网络通讯,提高执行效率。保证数据库安全,自动完成预先定义的作业。存储过程分为系统过程和用户定义的存储过程。系统存储过程是一组特殊的存储过程,它们在安装SQL时自动建立,存储在,Master中。所有系统存储过程名称都以SP_开始的。例如前面介绍过的SP_helpdb(显示所有数据库的信息)。系统存储过程为系统管理员提供管理SQL的支持,并且通过系统存储过程能够得到系统信息或完成管理工作。用户存储过程是指创建在每个用户自己数据库中的存储过程。这种存储过程的名字由用户命名,且名称前面没有前缀SP_。例1:在企业管理器中查看常用的系统存储过程。,具体
4、操作如下:打开企业管理器,打开数据库,master,存储过程。例2:通过存储过程来查询当前数据库的信息。SP_Helpdb或EXEC SP_Helpdb二、使用创建存储过程向导创建存储过程例如:创建对于“课程表”进行插入操作的存储过程。,具体操作如下:在企业管理器中单击工具栏中运行向导,在弹出的选择向导对话框中展开“数据库创建存储过程向导”,弹出欢迎使用创建存储过程向导对话框。以下操作看演示。那么如何执行创建完的存储过程呢?在查询分析器中输入下列内容:插入课程表 c009,ejb实用技术,孙高然后执行即可。为了验证这个存储过程的作用,在查询分析器中执行下列SQL语句。,SELECT*FROM
5、课程表WHERE 课程号=C009三、使用SQL语句创建存储过程语法格式:CREATE PROC(,)AS|语句块,其中:是存储过程的输入输出参数。说明参数类型。或是定义存储过程内容的语句。例如:建立判断男生与女生的平均奖学金高低的存储过程。如果学生基本表中信息男生奖学金的平均值高于女生奖学金的平均值,则显示“男生的奖学金平均值高于女生的奖学金平均值”,,否则显示“男生的奖学金平均值不高于女生的奖学金平均值”,创建存储过程的SQL语句如下:CREATE PROC 按照性别判断平均奖学金高低AS IF(SELECT AVG(奖学金)FROM 学生基本表 WHERE 性别=男)(SELECT AV
6、G(奖学金),FROM 学生基本表 WHERE 性别=女)PRINT 男生的奖学金平均值高于女生的奖学金平均值ELSE PRINT 男生的奖学金平均值不高于女生的奖学金平均值这样存储过程就创建完毕。执行存储过程有两种方式:存储过程名EXEC 存储过程名,例如:显示男生奖学金平均值、女生奖学金平均值并且给出判断信息。CREATE PROC 按照性别判断平均奖学金高低1ASBEGIN DECLARE X NUMERIC(8,2),Y UNMERIC(8,2)SET X=(SELECT AVG(奖学金)FROM 学生基本表 WHERE 性别=男)SET Y=(SELECT AVG(奖学金)FROM
7、学生基本表 WHERE 性别=女),PRINT XPRINT YIF(XY)PRINT 男生的奖学金平均值高于女生的奖学金平均值ELSE PRINT 男生的奖学金平均值不高于女生的奖学金平均值END,四、管理存储过程使用SQL语句可以更为有效地管理存储过程。例如:建立一个查询指定学号奖学金信息的存储过程“查询奖学金”,输入参数为学号,如果没有输入学号,则输出提示信息。建立这个存储过程的SQL 语句如下:CREATE PROC 查询奖学金 xh char(4)=nullAS IF XH IS NULL BEGIN,PRINT 请输入要查询奖学金的学号 RETURN ENDELSE BEGIN S
8、ELECT 学号,姓名,奖学金 FROM 学生基本表 WHERE 学号=xh END这里要注意的是,这个存储过程有一个输入,参数XH,使用XH表示,同时定义了数据类型为CHAR(4),这与学生基本表中学号列的定义一样的。当定义了输入参数之后,可以在存储过程体中采用XH来使用。执行存储过程:查询奖学金 x101或者查询奖学金请输入要查询奖学金的学号X101,修改存储过程,其语法格式如下:ALTER PROC(AS SQL语句|语句块例如:修改存储过程“查询奖学金”,要求增加输出性别信息。,ALTER PROC 查询奖学金 xh char(4)=nullAS IF XH IS NULL BEGIN
9、 PRINT 请输入要查询奖学金的学号 RETURN ENDELSE BEGIN SELECT 学号,姓名,性别,奖学金 FROM 学生基本表 WHERE 学号=xh END,删除存储过程:DROP PROCEDURE 例如:删除存储过程“查询奖学金”DROP PROCEDURE 查询奖学金存储过程的综合练习:DROP PROC 查询奖学金GOUSE 学生信息库GOCREATE PROC 查询奖学金 xh char(4)=nullAS IF XH IS NULL BEGIN,PRINT 请输入要查询奖学金的学号 RETURN ENDELSE BEGIN SELECT 学号,姓名,奖学金 FRO
10、M 学生基本表 WHERE 学号=xh ENDGO,EXEC 查询奖学金 X101GO该实例是在学生信息库中给出学生的学号,查出奖学金,在该批处理中,包括了删除存储过程、建立存储过程、执行存储过程的SQL语句。此外,SQL还提供了查看存储过程的系统存储过程。SP_help:输出指定存储过程的参数和数据类型。,SP_helptext:输出定义指定存储过程内容的源代码。SP_depends:输出与指定存储过程相关的数据库对象。例如:查看存储过程“查询奖学金”的源代码。SP_HELPTEXT 查询奖学金希望同学们对以上存储过程有一个全面的理解和认识。,触发器,一、触发器的概念触发器是一种特殊类型的存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 存储 过程 触发器
链接地址:https://www.31ppt.com/p-6520915.html