《存储过程和触发器》PPT课件.ppt
《《存储过程和触发器》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《存储过程和触发器》PPT课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、1,第四章存储过程和触发器,2,第4章 存储过程和触发器,4.1 存储过程4.2 触发器,3,4.1 存储过程,4.1.1 存储过程基本概念4.1.2 创建和执行存储过程4.1.3 存储过程的修改和删除,4,4.1.1 存储过程基本概念,存储过程是指经过预先编译的SQL语句的集合,可以以一种可执行的形式永久地存储在数据库中。需要时只需调用该过程就可以完成相应的操作。存储过程类似于程序设计语言中的过程和函数。,5,4.1.1 存储过程基本概念(续),存储过程具有以下优点。(1)运行速度快(2)模块化编程,增强代码的重用性和共享性(3)减少网络通信量(4)保证系统的安全性,6,4.1.1 存储过程
2、基本概念(续),在SQL Server中,存储过程有两种类型:系统存储过程用户定义的存储过程系统存储过程存放在master数据库中并以sp_为前缀,主要是从系统表中获取信息,为系统管理员管理SQL Server提供支持。用户自定义存储过程是由用户创建并能完成某一特定功能的存储过程。对于用户创建的存储过程,尽量不要以sp_作为其名称的前缀。,7,4.1.2 创建和执行存储过程,一、创建存储过程T-SQL语句格式:CREATE PROCEDURE procedure_name parameter data_type=default OUTPUT,WITH ENCRYPTION AS sql_sta
3、tement;procedure_name:存储过程名parameter:存储过程中定义的输入/输出参数data_type:参数的数据类型default:定义参数的默认值OUTPUT:输出参数WITH ENCRYPTION:加密存储过程sql_statement:存储过程中要执行的T-SQL语句,8,一、创建存储过程(续),创建存储过程时,需要注意以下几点:(1)CREATE PROCEDURE不能与其他的T-SQL语句位于同一个批处理中。(2)创建存储过程的权限默认属于数据库拥有者。(3)只能在当前数据库中创建存储过程。(4)成功执行CREATE PROCEDURE语句后,存储过程名称将存储
4、在sysobjects系统表中,而CREATE PROCEDURE语句的文本将存储在syscomments中。(5)存储过程可以嵌套调用。(6)存储过程中不允许使用创建数据库对象的语句。,9,一、创建存储过程(续),例4.1 在学生-课程数据库中创建一个存储过程,查看“张明”同学的有关基本信息和选修课程的情况。CREATE PROCEDURE student_course AS SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AN
5、D Sname=张明;为了避免出现重复的存储过程名称而无法建立该存储过程,可以先使用以下语句:IF EXISTS(SELECT name FROM sysobjects WHERE name=student_course AND type=P)DROP PROCEDURE student_course;,10,一、创建存储过程(续),系统存储过程sp_helptext:查看存储过程中的SQL语句系统存储过程sp_depends:查看存储过程使用的对象以及调用该存储过程的其他存储过程的名称。,11,二、执行存储过程,EXECUTE语句格式如下:EXECUTE return_status=para
6、meter=value|variable OUTPUT,.n;-return_status:是一个可选的整型变量,保存存储过程的返回状态。这个变量在EXECUTE语句之前,必须声明过。-procedure_name:被调用执行的存储过程名。-parameter:是CREATE PROC语句中定义的存储过程参数。在以parameter_name=value格式使用时,参数名称和常量不一定按照CREATE PROC语句中定义的顺序出现,但是若有一个参数使用parameter_name=value格式,则其他所有参数都必须使用这种格式。-variable:保存输入参数或者输出参数值的变量。-OUTP
7、UT:输出参数。存储过程的匹配参数也须指定关键字OUTPUT。,12,二、执行存储过程(续),例4.2 调用例4.1定义的存储过程的方法为EXECUTE student_course;即可查询“张明”同学的相关信息。,13,三、通过存储过程传递参数,参数:输入参数和输出参数输入参数:当程序执行存储过程时,可以通过输入参数向该存储过程传递值,这些值可作为SQL编程语言中的标准变量使用 输出参数:存储过程也可以通过OUTPUT参数将值返回至调用程序。一个存储过程可以定义多达1024个参数,每个参数必须指定参数名和数据类型,并且参数名必须以“”符号作为前缀,也可以为参数指定默认值。,14,三、通过存
8、储过程传递参数(续),(1)带输入参数的存储过程 例4.3 可以查询任意一个学生的选修信息。可将学生姓名作为输入参数把值传递给存储过程。CREATE PROCEDURE student_course1 StudentName VARCHAR(10)AS SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=StudentName;,15,三、通过存储过程传递参数(续),调用该存储过程的方法为EXECUTE stude
9、nt_course1 张明;或 EXECUTE student_course1StudentName=张明;,16,三、通过存储过程传递参数(续),例4.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);该存储过程通过参数将学生的有关情况传递给存储过程。调用该存储过程的方法为EXECUTE PROCEDURE stud
10、ent_insert 950002,李明,男,20,CS;,17,三、通过存储过程传递参数(续),(2)使用默认参数值例4.5 创建一个存储过程,若没有给出学生姓名,则返回所有学生的有关情况。CREATE PROCEDURE student_course2 StudentName VARCHAR(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 ELS
11、E,18,三、通过存储过程传递参数(续),(续上页)ELSE BEGIN SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=StudentName END,19,三、通过存储过程传递参数(续),(2)使用输出参数 例4.6 创建一个存储过程,返回选修某门课程的学生人数。CREATE PROCEDURE student_countCourseName VARCHAR(20),StudentSum INT OUTPU
12、TAS SELECT StudentSum=COUNT(*)FROM Coures,SC WHERE Course.Cno=SC.Cno AND Cname=CourseName;调用该存储过程的例子:DECLARE studentNum INT;EXECUTE student_count 数据库原理及应用,studnetNum OUTPUT;SELECT The result is:,studentNum;,20,三、通过存储过程传递参数(续),例4.7 创建一个存储过程,输出学生的基本情况。CREATE PROCEDURE student_queryxh CHAR(6),name VARC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储过程和触发器 存储 过程 触发器 PPT 课件
链接地址:https://www.31ppt.com/p-5491750.html