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