第三章存储过程与触发器精选文档.ppt
《第三章存储过程与触发器精选文档.ppt》由会员分享,可在线阅读,更多相关《第三章存储过程与触发器精选文档.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章存储过程与触发器1本讲稿第一页,共四十页第第4章章 存储过程和触发器存储过程和触发器 4.1 4.1 存储过程存储过程4.2 4.2 触发器触发器本讲稿第二页,共四十页4.1 4.1 存储过程存储过程4.1.1 4.1.1 存储过程存储过程基本概念基本概念4.1.2 4.1.2 创建和执行存储过程创建和执行存储过程4.1.3 4.1.3 存储过程的修改和删除存储过程的修改和删除本讲稿第三页,共四十页4.1.1 4.1.1 存储过程存储过程基本概念基本概念存储过程是指经过预先编译的存储过程是指经过预先编译的SQLSQL语句的语句的集合,可以以一种可执行的形式永久地存集合,可以以一种可执行的
2、形式永久地存储在数据库中。储在数据库中。需要时只需调用该过程就可以完成相应的需要时只需调用该过程就可以完成相应的操作。操作。存储过程类似于程序设计语言中的过程和函存储过程类似于程序设计语言中的过程和函数。数。本讲稿第四页,共四十页4.1.1 4.1.1 存储过程存储过程基本概念基本概念(续续)存储过程具有以下优点。存储过程具有以下优点。(1 1)运行速度快)运行速度快 (2 2)模块化编程,增强代码的重用性和)模块化编程,增强代码的重用性和共享性共享性 (3 3)减少网络通信量)减少网络通信量 (4 4)保证系统的安全性)保证系统的安全性 本讲稿第五页,共四十页4.1.1 4.1.1 存储过程
3、存储过程基本概念基本概念(续续)在在SQL ServerSQL Server中,存储过程有两种类型:中,存储过程有两种类型:系统存储过程系统存储过程用户定义的存储过程用户定义的存储过程系系统统存存储储过过程程存存放放在在mastermaster数数据据库库中中并并以以sp_sp_为为前前缀缀,主主要要是是从从系系统统表表中中获获取取信信息息,为为系系统管理员管理统管理员管理SQL ServerSQL Server提供支持。提供支持。用用户户自自定定义义存存储储过过程程是是由由用用户户创创建建并并能能完完成成某某一一特特定定功功能能的的存存储储过过程程。对对于于用用户户创创建建的的存储过程,尽量
4、存储过程,尽量不要以不要以sp_sp_作为其名称的前缀。作为其名称的前缀。本讲稿第六页,共四十页4.1.2 4.1.2 创建和执行存储过程创建和执行存储过程一、创建存储过程一、创建存储过程T-SQLT-SQL语句格式:语句格式:CREATE PROCEDURE procedure_name CREATE PROCEDURE procedure_name parameter data_type=default OUTPUT,parameter data_type=default OUTPUT,WITH ENCRYPTION WITH ENCRYPTION AS sql_statement AS
5、sql_statement;procedure_nameprocedure_name:存储过程名存储过程名parameterparameter:存储过程中定义的输入存储过程中定义的输入/输出参数输出参数data_typedata_type:参数的数据类型参数的数据类型defaultdefault:定义参数的默认值定义参数的默认值OUTPUTOUTPUT:输出参数输出参数WITH ENCRYPTIONWITH ENCRYPTION:加密存储过程加密存储过程sql_statementsql_statement:存储过程中要执行的存储过程中要执行的T-SQLT-SQL语句语句本讲稿第七页,共四十页一
6、、创建存储过程一、创建存储过程(续续)创建存储过程时,需要创建存储过程时,需要注意以下几点注意以下几点:(1 1)CREATE PROCEDURECREATE PROCEDURE不能与其他的不能与其他的T-SQLT-SQL语句语句位于同一位于同一个批处理中。个批处理中。(2 2)创建存储过程的创建存储过程的权限权限默认属于数据库拥有者。默认属于数据库拥有者。(3 3)只能在只能在当前数据库中创建当前数据库中创建存储过程。存储过程。(4 4)成功执行成功执行CREATE PROCEDURECREATE PROCEDURE语句后,存储过程语句后,存储过程名称名称将存将存储在储在sysobjects
7、sysobjects系统表中,而系统表中,而CREATE PROCEDURECREATE PROCEDURE语句语句的的文本文本将存储在将存储在syscommentssyscomments中。中。(5 5)存储过程可以存储过程可以嵌套调用嵌套调用。(6 6)存储过程中存储过程中不允许不允许使用创建数据库对象的语句。使用创建数据库对象的语句。本讲稿第八页,共四十页一、创建存储过程一、创建存储过程(续续)例例4.1 4.1 在学生在学生-课程数据库中创建一个存储过程,查看课程数据库中创建一个存储过程,查看“张张明明”同学的有关基本信息和选修课程的情况。同学的有关基本信息和选修课程的情况。CREAT
8、E CREATE PROCEDURE student_coursePROCEDURE student_course AS AS SELECT Student.Sno,Sname,Cname,Grade SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=Course.Cno=SC.Cno AND Sname=张明
9、张明;为了为了避免出现重复避免出现重复的存储过程名称而无法建立该存的存储过程名称而无法建立该存储过程,可以先使用以下语句:储过程,可以先使用以下语句:IF EXISTSIF EXISTS(SELECT SELECT namename FROM FROM sysobjectssysobjects WHERE WHERE name=student_coursename=student_course AND AND type=Ptype=P)DROP PROCEDUREDROP PROCEDURE student_course student_course;本讲稿第九页,共四十页一、创建存储过程一、
10、创建存储过程(续续)系统存储过程系统存储过程sp_helptextsp_helptext:查看存储过程中的查看存储过程中的SQLSQL语句语句系统存储过程系统存储过程sp_dependssp_depends:查看存储过程使用的对象以及调用该存储查看存储过程使用的对象以及调用该存储过程的其他存储过程的名称。过程的其他存储过程的名称。本讲稿第十页,共四十页二、执行存储过程二、执行存储过程EXECUTEEXECUTE语句格式如下:语句格式如下:EXECUTE EXECUTE return_status=return_status=parameter=value|parameter=value|var
11、iable OUTPUT,.n;variable OUTPUT,.n;-return_statusreturn_status:是一个可选的是一个可选的整型变量整型变量,保存存储过程的,保存存储过程的返回状返回状态态。这个变量在。这个变量在EXECUTEEXECUTE语句之前,必须声明过。语句之前,必须声明过。-procedure_nameprocedure_name:被调用执行的存储过程名。被调用执行的存储过程名。-parameterparameter:是是CREATE PROCCREATE PROC语句中定义的存储过程参数。在以语句中定义的存储过程参数。在以parameter_name=va
12、lueparameter_name=value格式使用时,参数名称和常量不格式使用时,参数名称和常量不一定按照一定按照CREATE PROCCREATE PROC语句中定义的顺序出现,但是若有一个语句中定义的顺序出现,但是若有一个参数使用参数使用parameter_name=valueparameter_name=value格式,则其他所有参数都格式,则其他所有参数都必须使用这种格式。必须使用这种格式。-variablevariable:保存输入参数或者输出参数值的变量。保存输入参数或者输出参数值的变量。-OUTPUTOUTPUT:输出参数。存储过程的匹配参数也须指定关键字输出参数。存储过程的
13、匹配参数也须指定关键字OUTPUTOUTPUT。本讲稿第十一页,共四十页二、执行存储过程二、执行存储过程(续续)例例4.24.2 调用例调用例4.14.1定义的存储过程的方法为定义的存储过程的方法为EXECUTE student_course;EXECUTE student_course;即可查询即可查询“张明张明”同学的相关信息。同学的相关信息。本讲稿第十二页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数 参数:参数:输入参数输入参数和和输出参数输出参数输入参数输入参数:当程序执行存储过程时,可以通过:当程序执行存储过程时,可以通过输入参数向该存储过程传递值,这些值可作输入参数向
14、该存储过程传递值,这些值可作为为SQLSQL编程语言中的标准变量使用编程语言中的标准变量使用 输出参数输出参数:存储过程也可以通过:存储过程也可以通过OUTPUTOUTPUT参数将参数将值返回至调用程序。值返回至调用程序。一个存储过程可以定义多达一个存储过程可以定义多达10241024个参数,个参数,每个参数必须指定每个参数必须指定参数名参数名和和数据类型数据类型,并且,并且参数名必须参数名必须以以“”符号作为前缀符号作为前缀,也可以,也可以为参数指定默认值为参数指定默认值。本讲稿第十三页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)(1 1)带输入参数的存储过程)带输入参
15、数的存储过程 例例4.34.3 可以查询任意一个学生的选修信息。可将学生姓名作可以查询任意一个学生的选修信息。可将学生姓名作为输入参数把值传递给存储过程。为输入参数把值传递给存储过程。CREATE PROCEDURE student_course1 CREATE PROCEDURE student_course1 StudentName VARCHAR(10)StudentName VARCHAR(10)ASAS SELECT Student.Sno,Sname,Cname,Grade SELECT Student.Sno,Sname,Cname,Grade FROM Student,Cour
16、se,SC FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=Course.Cno=SC.Cno AND Sname=StudentNameStudentName;本讲稿第十四页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)调用该存储过程的方法为调用该存储过程的方法为EXECUTE student_course1 EXECUTE student_course1 张明张明;或或 EXECUTE student_
17、course1EXECUTE student_course1StudentName StudentName=张明张明;本讲稿第十五页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)例例4.44.4 创建一个存储过程用于向学生表中插入记录。创建一个存储过程用于向学生表中插入记录。CREATE PROCEDURE student_insertxh CHAR(6),name VARCHAR(8),sex CHAR(2),age INT,sdep CHAR(10)AS INSERT INTO Student VALUES(xh,name,sex,age,sdep);该存储过程通过参数
18、将学生的有关情况传递给存储过程。该存储过程通过参数将学生的有关情况传递给存储过程。调用该存储过程的方法为调用该存储过程的方法为EXECUTE PROCEDURE student_insert 950002,李明李明,男男,20,CS;本讲稿第十六页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)(2 2)使用默认参数值)使用默认参数值例例4.54.5 创建一个存储过程,若没有给出学生姓名,则返回创建一个存储过程,若没有给出学生姓名,则返回所有学生的有关情况。所有学生的有关情况。CREATE PROCEDURE student_course2 StudentName VARCH
19、AR(10)=NULLAS IF StudentName IS NULLBEGIN SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SCWHERE Student.Sno=SC.Sno ANDCourse.Cno=SC.Cno END ELSE本讲稿第十七页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)(续上页续上页)ELSE BEGIN SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno A
20、ND Course.Cno=SC.Cno AND Sname=StudentName END本讲稿第十八页,共四十页三、三、通过存储过程传递参数通过存储过程传递参数(续续)(2 2)使用输出参数)使用输出参数 例例4.64.6 创建一个存储过程,返回选修某门课程的学生人数。创建一个存储过程,返回选修某门课程的学生人数。CREATE PROCEDURE student_countCourseName VARCHAR(20),StudentSum INT OUTPUTINT OUTPUTAS SELECT StudentSum=COUNT(*)FROM Coures,SC WHERE Course
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 存储 过程 触发器 精选 文档
限制150内