欢迎来到天天文库
浏览记录
ID:32379982
大小:85.50 KB
页数:11页
时间:2019-02-04
《存储过程详细介绍》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、存储过程一、存储过程的概念存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在SQLServer的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQLServer提供支持。通过系统存储过程,MSSQLServer中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺
2、利有效地完成。尽管这些系统存储过程被放在master数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。在本章中所涉及到的存储过程主要是指用户自定义存储过程。注意:存储过程虽然既有参数又有返回值,但是它与函数不同。存储过程的返回值只是指明执行是否成功,并且它不能像函数那样被直接调用,也就是在调用存储过程时,在存储过程名字前一定要有EXEC保留字。二、存储
3、过程的优点1.提高系统效率a.提高应用程序与数据库的通信速度;【存储过程代码直接存储于数据库中,不会产生大量T-sql语句的代码流量,节约网络带宽。】b.减少应用程序与数据库的交互次数,降低消耗。【对于需要多次访问数据的复杂操作,如果写在程序当中,那么就需要不断的或者大量的提取数据库中的数据到程序中进行运算,而如果是使用存储过程,就减少了应用程序与数据库的交互次数。】c.数据库执行速度更快;【存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次。】2增强系统安全性a、通过向用户授予对存储过程(
4、而不是基于表)的访问权限,它们可以提供对特定数据的访问;b、提高代码安全,防止SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);c、SqlParameter类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。3.系统升级、维护方便更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。4.应用程序出错概率小如果把所有的数据逻辑都放在存储过程中,那么asp.net只需要负责界面的显示,出错的可能性最大就是在存储过程。5
5、.写程序简单采用存储过程调用类,调用任何存储过程都只要1-2行代码。11三、存储过程的缺点1.可移植性差由于存储过程将应用程序绑定到数据库,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在非常重要,则将业务逻辑封装在中间层中可能是一个更佳的选择。2.无法形成通用的可支持复用的业务逻辑框架大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装。3.代码可读性差,相当难维护.4.不支持群集数据库服务器是单点的,极难扩展,即便Oracle的群集,他的共享
6、存储数据库也是单点的,如果业务逻辑的运算非常消耗CPU和IO,你没有任何有效的办法来扩展系统的性能。但是应用服务器出现CPU和IO瓶颈,你只需要加服务器就行了。对于并非极度依赖数据的业务逻辑运算,如果在应用服务器端来实现的话,特别是采用SNA架构的情况下,理论上可以获得无限的水平扩展能力,只要加服务器就行了。但如果你放在数据库里面,你就大眼瞪小眼了,加服务器都不管用了。5.采用存储过程调用类,需要进行两次调用操作,一次是从sqlserver中取到过程的参数信息,并且建立参数;第二次才是调用这个过程。多了一次消耗。6.如果更改范围大到需要对输入
7、存储过程的参数进行更改,或者要更改由其返回的数据,则仍需要更新程序集中的代码以添加参数、更新GetValue()调用等,这时候就比较繁琐了。有人说存储过程是【一种开发效率低下的、维护成本非常高、业务修改成本极高、难以编写自动回归测试的、没有声明式事务的、没有缓存管理的、没有多线程的、几乎没有什么和其他系统作接口的、大量消耗数据库CPU的、无法轻易扩展的(只能scaleup,不能scaleout),没有异步消息功能的,没有清晰的内存数据存储模型的,较难复用业务逻辑代码的面向过程数据操纵语言而已。】四、什么情况适合使用存储过程1.当一个业务同时对
8、多个表进行处理的时候采用存储过程比较合适。2.复杂的数据处理用存储过程,如有些报表处理。3.多条件多表联合查询,并做分页处理,用存储过程也比较适合。4.存储过程过分
此文档下载收益归作者所有