存储过程和用户存储过程设计.ppt
《存储过程和用户存储过程设计.ppt》由会员分享,可在线阅读,更多相关《存储过程和用户存储过程设计.ppt(38页珍藏版)》请在三一办公上搜索。
1、1,浙江财经学院,第12章 存储过程和用户存储过程设计,12.1 存储过程概述 12.2 系统存储过程12.3 创建和执行用户存储过程12.4 带状态参数的存储过程及实例分析12.5 修改和删除存储过程12.6 存储过程设计实例分析,2,浙江财经学院,12.1 存储过程概述,12.1.1 存储过程的概念和分类 SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户或应用程序通过指定存储过程的名
2、字并给出参数来执行它,而且允许用户声明变量、有条件执行以及其它强大的编程功能。在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。,3,浙江财经学院,12.1.2 存储过程的优点,(1)存储过程允许标准组件式编程 存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程的SQL 语句。而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响(因为应用程序源代码只包含存储过程的调用语句),从而极大地提高了程序的可移植性。(2)存储过程能够实现较快的执行速度 如果某一操作包含大量的Transaction-SQL 代码或分别被多次执行,那么
3、存储过程要比批处理的执行速度快很多。,4,浙江财经学院,12.1.2 存储过程的优点,(3)存储过程能够减少网络流量 对于同一个针对数据数据库对象的操作(如查询、修改),当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量,降低网络负载。(4)存储过程可被作为一种安全机制来充分利用系统管理员通过对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全。(5)自动完成需要预先执行的任务.存储过程可以在系统启动时自动执行,而不必在系统启动后再进行手工操作,大大方便了用户的使用,可以自动完成一些需要预先执行的
4、任务。,5,浙江财经学院,12.2 系统存储过程,12.2.1 系统存储过程分类 系统存储过程就是系统创建的存储过程,目的在于能够方便地从系统表中查询信息或完成与更新数据库表相关的管理任务或其它的系统管理任务。系统过程以“sp_开头,在Master数据库中创建并保存在该数据库中,为数据库管理者所有。一些系统过程只能由系统管理员使用,而有些系统过程通过授权可以被其它用户所使用。,6,浙江财经学院,12.2.2 一些常用的系统存储过程,7,浙江财经学院,8,浙江财经学院,12.2 系统存储过程,例如,sp_helpdb系统存储过程,其功能是:报告有关指定数据库或所有数据库的信息。语法:sp_hel
5、pdb dbname=数据库名【例】返回有关所有数据库的信息 exec sp_helpdb,9,浙江财经学院,12.3.1 创建用户存储过程,用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。在SQL Server中,可以使用两种方法创建存储过程:利用SQL Server对象资源管理器创建存储过程。使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。创建存储过程时,需要确定存储过程的三个组成部分:所有的输入参数以及传给调用者的输出参数。被执行的针对数据库的操作语句,包括调用其它存储过程的语句。返回给调用者的状态值,以指明调
6、用是成功还是失败。,10,浙江财经学院,1使用SQL Server对象资源管理器创建存储过程 在SQL Server对象资源管理器中,选择指定的服务器和数据库,在可编程性里选择存储过程,用右键单击,在弹出的快捷菜单中选择“新建存储过程”选项,如图12-1所示。,图12-1 选择向导,11,浙江财经学院,2使用Transact-SQL语句命令创建存储过程创建存储过程前,应该考虑下列几个事项:在一个批处理中,Create Procedure 语句不能与其它SQL语句合并在一起;创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。存储过程是数据库对象,其名称必须遵守标识符规则。只
7、能在当前数据库中创建当前数据库的存储过程。一个存储过程的最大尺寸为128M。,12,浙江财经学院,语法格式:CREATE PROCEDURE 存储过程名(参数名 数据类型 VARYING=default OUTPUT,)WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION FOR REPLICATION AS SQL语句,13,浙江财经学院,生疏参数说明:VARYING:指定由OUTPUT参数支持的结果集,仅应用于游标型参数。OUTPUT:用来声明存储过程的返回参数,其值可以返回给调用它的EXECUTE语句。WITH RECOMPILE:要求SQL Se
8、rver不要在缓存中保存存储过程的执行计划,而在每次执行时都重新对它进行编译。WITH ENCRYPTION:要求对存储在syscomments系统表中的存储过程定义文本进行加密。FOR REPLICATION:说明该存储过程只能在复制过程中执行,不能与WITH RECOMPILE同时使用。,14,浙江财经学院,【例】创建一个简单的存储过程,返回所有学生的基本信息,包括学生的学号、姓名、所学专业、所在二级学院、来自的城市。USE 教学管理IF EXISTS(SELECT*FROM sysobjects WHERE name=P_学生部分信息 AND type=p)BEGIN DROP PROC
9、EDURE P_学生部分信息 ENDGOCREATE PROCEDURE P_学生部分信息 AS SELECT 学号,姓名,专业,所在院系,籍贯 FROM 学生表GO,15,浙江财经学院,USE 教学管理IF EXISTS(SELECT*FROM sysobjects WHERE name=P_学生选课信息 AND type=p)BEGIN DROP PROCEDURE P_学生选课信息 ENDGOCREATE PROCEDURE P_学生选课信息(专业 CHAR(20),课名 CHAR(20)AS SELECT S.学号,姓名,专业,所在院系,O.课号,课名,成绩 FROM 学生表 S,选课
10、表 E,开课表 O,课程表 C where 专业=专业 AND 课名=课名 AND S.学号=E.学号 AND E.开课号=O.开课号 AND O.课号=C.课号GO,【例】创建带参数的存储过程,实现对指定的某一专业某门课程的学生选课信息和成绩的查询。,16,浙江财经学院,执行已创建的存储过程使用EXECUTE命令语法格式:EXEC UTE return_status=;版本号|procedure_name_var 参数=value|variable OUTPUT|DEFAULT,.n WITH RECOMPILE,17,浙江财经学院,【例】对存储过程P_学生部分信息的执行。EXEC P_学生
11、部分信息,【例】带输入参数的存储过程P_学生选课信息的执行。(1)按参数位置传递值,或者:,DECLARE smajor CHAR(20),cname CHAR(20)SET smajor=计算机SET cname=数据结构EXEC P_学生选课信息 smajor,cname,或者:,DECLARE smajor CHAR(20)SET smajor=计算机EXEC P_学生选课信息 smajor,数据结构,Exec P_学生选课信息 计算机,数据结构,18,浙江财经学院,(2)按参数名传递值 Exec P_学生选课信息 SMAJOR=计算机,CNAME=数据结构 按参数名传递值可以改变参数的
12、顺序:Exec P_学生选课信息 CNAME=数据结构,SMAJOR=计算机,19,浙江财经学院,(3)也可以两种方法混合使用,一旦使用了 name=value 形式之后,所有后续的参数就必须以 name=value 的形式传递。比如:Exec P_学生选课信息 计算机,CNAME=数据结构 但是:如果按如下命令执行P_学生选课信息存储过程,系统将提示出错信息。Exec P_学生选课信息 CNAME=计算机,数据结构 服务器:消息 119,级别 15,状态 1,行 1,20,浙江财经学院,【例】使用OUTPUT参数的存储过程及其执行,USE 教学管理GOIF EXISTS(SELECT*FRO
13、M sysobjects WHERE name=P_成绩检索和平均 AND type=p)BEGIN DROP PROCEDURE P_成绩检索和平均 ENDGOCREATE PROCEDURE P_成绩检索和平均(学号 CHAR(7),平均成绩 FLOAT OUTPUT)ASSELECT S.学号,姓名,课号,成绩FROM 学生表 S,开课表 O,选课表 EWHERE S.学号=学号AND E.学号=S.学号 AND E.开课号=O.开课号,21,浙江财经学院,SELECT 平均成绩=AVG(成绩)FROM 学生表 S,开课表 O,选课表 EWHERE S.学号=学号 AND E.学号=S.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 用户 设计

链接地址:https://www.31ppt.com/p-6564328.html