《数据库原理与应用》09.存储过程的创建和使用.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《数据库原理与应用》09.存储过程的创建和使用.ppt》由会员分享,可在线阅读,更多相关《《数据库原理与应用》09.存储过程的创建和使用.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、孙孙孙孙 发发发发 勤勤勤勤 扬州大学新闻与传媒学院扬州大学新闻与传媒学院扬州大学新闻与传媒学院扬州大学新闻与传媒学院YY数据库原理与应用数据库原理与应用第九讲第九讲 存储过程的创建和使用存储过程的创建和使用1、创建存储过程、创建存储过程2、执行存储过程、执行存储过程3、查看和修改存储过程、查看和修改存储过程4、重命名和删除存储过程重命名和删除存储过程 本讲主要内容 存储过程的概念SQL ServerSQL Server提供了一种方法,它可以将一些固定的提供了一种方法,它可以将一些固定的操作集中起来由操作集中起来由SQL ServerSQL Server数据库服务器来完成,以实数据库服务器来完
2、成,以实现某个任务,这种方法就是存储过程。现某个任务,这种方法就是存储过程。类似于类似于DOS一下一下的批处理。存储过程是的批处理。存储过程是SQL语句和可选控制流程语句的语句和可选控制流程语句的预编译集合。是一种封装重复任务操作的方法,以一个预编译集合。是一种封装重复任务操作的方法,以一个名称存储,作为一个单元处理。存储过程属于服务器方名称存储,作为一个单元处理。存储过程属于服务器方软件,可立即访问数据库软件,可立即访问数据库在在SQL SQL ServerServer中中存存储储过过程程分分为为两两类类:即即系系统统提提供供的的存存 储储 过过 程程 和和 用用 户户 自自 定定 义义 的
3、的 存存 储储 过过 程程。存储过程存储在数据库内,可由应用程序通过一个存储过程存储在数据库内,可由应用程序通过一个调用来执行,而且充许用户声明变量。同时,存储过程调用来执行,而且充许用户声明变量。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。可以嵌套调用。注意注意:存储过程与函数不同,因为存储过程并不返回存储过程与函数不同,因为存储过程并不返回取代其名称的值,也不能直接在表达式中使用。取代其名称的值,也不能直接在表达式中使用。在在SQLServer中存储过程分为两类中存储过程分为两类:系统提供的存储过程和用户存系统
4、提供的存储过程和用户存储过程。系统过程主要存储在储过程。系统过程主要存储在Master数据库中,并以数据库中,并以SP_为前缀,并且为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQLServer提供支持。通过系统存储过程,提供支持。通过系统存储过程,SQLServer中的许多管理性或信息性的活动中的许多管理性或信息性的活动:如了解数据库对象、数据库信息如了解数据库对象、数据库信息都可以被顺利有效地完成。尽管这些系统存储过程被放在都可以被顺利有效地完成。尽管这些系统存储过程被放在master数据库数据库中,但是仍
5、可以在其它数据库中对其进行调用,在调用时不必在存储过中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名,而且当创建一个新数据库时,一些系统存储过程程名前加上数据库名,而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能成某一特定功能(如查询用户所需数据信息如查询用户所需数据信息)的存储过程。的存储过程。存储过程时存放在存储过程时存放在SQLServer中的特别快的数据库对象,当首次运中的特别快的数据库对象,当首次运行存储过程时,它按以下方
6、式进行行存储过程时,它按以下方式进行:1、该过程被划分成部件片断。、该过程被划分成部件片断。2、检查引用数据库中其它对蒙、检查引用数据库中其它对蒙(表、视图等表、视图等)的部件,确保引用的对的部件,确保引用的对象是存在的,这也被称为分解。象是存在的,这也被称为分解。3、一旦分解完成,该过程的名字将存放倒、一旦分解完成,该过程的名字将存放倒sysobjects表中,而创建表中,而创建存储过程的代码存放在存储过程的代码存放在syscomments表中表中4、然后编译,并且,编译过程中将创建如何运行查询的蓝本。该蓝、然后编译,并且,编译过程中将创建如何运行查询的蓝本。该蓝本通称称为常规计划或查询树,
7、查询树存放在本通称称为常规计划或查询树,查询树存放在sysProcetlures表中。表中。5、存储过程首次运行时,读出查询计划并完全编译成过程计划,然、存储过程首次运行时,读出查询计划并完全编译成过程计划,然后运行。这样,节约了每次运行存成过程的语法检查、分解和编译查询后运行。这样,节约了每次运行存成过程的语法检查、分解和编译查询树的时间。树的时间。当利用当利用SQLServer创建一个应用程序时,创建一个应用程序时,T-SQL是一种主是一种主要的编程语言。若运用要的编程语言。若运用T一一SQL来进行编程有两种方法来进行编程有两种方法:其一是在本地存储其一是在本地存储T-SQL程序并创建应用
8、程序,向程序并创建应用程序,向SQL-Server发送命令米对结果进行发送命令米对结果进行T-SQL编写的程序作为存储编写的程序作为存储过程其二是可以把部分用在过程其二是可以把部分用在SQLServer中,并创建应用程中,并创建应用程序来调用存储过程,对数据结果进行处理。存储过程能够序来调用存储过程,对数据结果进行处理。存储过程能够通过接收参数向调用者返回结果集,结果集的格式由调用通过接收参数向调用者返回结果集,结果集的格式由调用者确定者确定;返回状态值给调用者,指明调用是成功或是失败返回状态值给调用者,指明调用是成功或是失败:包括针对数据库的操作语句,并且可以在一个存储过程中包括针对数据库的
9、操作语句,并且可以在一个存储过程中调用另一存储过程。调用另一存储过程。我们通常更偏爱于使用第二种方法,即在我们通常更偏爱于使用第二种方法,即在SQLServer中使中使用存储过程,而不是在客户计算机上调用用存储过程,而不是在客户计算机上调用T一一QL编写的一编写的一段程序原因在于存储过程具有以下优点段程序原因在于存储过程具有以下优点:存储过程的优点可用存储过程封装事务规则。一旦封装完成,这些规可用存储过程封装事务规则。一旦封装完成,这些规则就可用于多个应用,从而有一个一致的数据接口,则就可用于多个应用,从而有一个一致的数据接口,因此,只需改变过程的功能,只需在一个地方对其进因此,只需改变过程的
10、功能,只需在一个地方对其进行修改,而不必对每个应用都进行修改。行修改,而不必对每个应用都进行修改。存储过程允许标准组件式编程存储过程允许标准组件式编程:存储过程在被创存储过程在被创建以后,可以在程序中被多次调用而不必重新编建以后,可以在程序中被多次调用而不必重新编写该存储过程的写该存储过程的SQL语句语句;而且数据库专业人员而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代可随时对存储过程进行修改,但对应用程序源代码毫无影响,因为应用程序源代码只包含存储过码毫无影响,因为应用程序源代码只包含存储过程的调用语句,从而极大地提高了程序的可移植程的调用语句,从而极大地提高了程序的可移植性。
11、性。存储过程能够实现较快的执行速度存储过程能够实现较快的执行速度:如果某一操作包含大如果某一操作包含大量的量的TSQL代码或分别被多次执行,那么存储过程要比代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析优化,首次运行一个存储过程时,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划并给出最终被存在系统表中的执行计划;而批处理的而批处理的T-SQL语句在每次运行时都要进行编译和优化,因此速度相语句在每次运行时都要进行编译和优化,因此速度相对要慢一些
12、。对要慢一些。存储过程能够减少网络流量存储过程能够减少网络流量:对于同一个针对数据数据库对于同一个针对数据数据库对象的操作对象的操作(如查询修改如查询修改),如果这一操作所涉及到的,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户计算机上语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句调用该存储过程时,网络中传送的只是该调用语句;否则否则将是多条将是多条SQL语句,从而大大增加了网络流量,降低网语句,从而大大增加了网络流量,降低网络负载。络负载。存储过程可被作为一种安全机制来充分利用存储过程可被作为一种安全机制来充分利用:系统管理系统
13、管理员通过对执行某一存储过程的权限进行限制,从而能够员通过对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制,避免非授权用户对实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全。数据的访问,保证数据的安全。创建存储过程的规则几乎任何可以写成批处理的几乎任何可以写成批处理的T一一SQL代码都可用于创建存代码都可用于创建存储过程,但是在设计存储过程时,需要遵循下列规则储过程,但是在设计存储过程时,需要遵循下列规则:名字必须符合名字必须符合SQLServer命名规则。命名规则。引用的对象必须在创建存储过程前就存在引用的对象必须在创建存储过程前就存在不能在
14、单个存储过程中创建后去掉或再创建同名的对象。不能在单个存储过程中创建后去掉或再创建同名的对象。存储过程最后能有存储过程最后能有255各参数。各参数。创建存储过程的规则再自己的存储过程中可以引用临时表,局部临时表再过程结束时将再自己的存储过程中可以引用临时表,局部临时表再过程结束时将会消失。会消失。再存储过程中不能有如下的再存储过程中不能有如下的SQL创建语句创建语句:CreateDefault、CreateProcedure、CreateRule、CreateTrigger、CreateView.可在过程中嵌套过程。可在过程中嵌套过程。创建存储过程的文本不能超过创建存储过程的文本不能超过64K
15、字节,以为字节,以为SQL存放再存放再syscomments表中。表中。若在存储过程中使用了若在存储过程中使用了Select*,而底层表中加入了新的列,新的列,而底层表中加入了新的列,新的列再过程运行时无法显示。再过程运行时无法显示。1 创建存储过程 在在SQL SQL ServerServer中中,可可以以使使用用三三种种方方法法创创建建存存储过程储过程 :使用创建存储过程向导创建存储过程。使用创建存储过程向导创建存储过程。利用利用SQL Server SQL Server 企业管理器创建存储过程。企业管理器创建存储过程。使使 用用 Transact-SQLTransact-SQL语语 句句
16、 中中 的的 CREATE CREATE PROCEDUREPROCEDURE命令创建存储过程。命令创建存储过程。需要确定存储过程的三个组成部分:所有的输入参数以及传给调用者的输出参数。所有的输入参数以及传给调用者的输出参数。被被执执行行的的针针对对数数据据库库的的操操作作语语句句,包包括括调调用用其其它存储过程的语句。它存储过程的语句。返返回回给给调调用用者者的的状状态态值值,以以指指明明调调用用是是成成功功还还是失败。是失败。1.使用创建存储过程向导创建存储过程 在在企企业业管管理理器器中中,选选择择工工具具菜菜单单中中的的向向导导选选项项,选选择择“创创建建存存储储过过程程向向导导”根根
17、据据提提示示可可完成创建存储过程。完成创建存储过程。2.使用SQL Server 企业管理器创建存储过程()在在SQL SQL ServerServer企企业业管管理理器器中中,选选择择指指定定的的服服务务器器和和数数据据库库,用用右右键键单单击击要要创创建建存存储储过过程程的的数数据据库库,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“新新建建”选选项项,再再选选择择下下一一级级菜单中的菜单中的“存储过程存储过程”选项选项()在在文文本本框框中中可可以以输输入入创创建建存存储储过过程程的的T_SQLT_SQL语语句句,单单击击“检检查查语语法法”,则则可可以以检检查查语语法法是是否否正正确确
18、;单单击击“确确定定”按按钮钮,即即可可保保存存该该存存储储过过程程。如如果果要要设设置置权权限,单击限,单击“权限权限”按钮。按钮。3.使用Transact-SQL语句创建存储过程创建存储过程前,应该考虑下列几个事项:创建存储过程前,应该考虑下列几个事项:不不能能将将 CREATE CREATE PROCEDURE PROCEDURE 语语句句与与其其它它 SQL SQL 语语句句组组合到单个批处理中。合到单个批处理中。创创建建存存储储过过程程的的权权限限默默认认属属于于数数据据库库所所有有者者,该该所所有有者可将此权限授予其他用户。者可将此权限授予其他用户。存储过程是数据库对象,其名称必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理与应用 数据库 原理 应用 09. 存储 过程 创建 使用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内