日期:2014-05-16 浏览次数:20387 次
?
?
?? ? ? ?存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
?
?? ? ? ?1. 速度快。存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
?? ? ? ?2. 写程序简单。采用存储过程调用类,调用任何存储过程都只要1-2行代码。
?? ? ? ?3. 升级、维护方便。存储过程会使得维护起来更加方便,因为通常修改一个存储过程要比在一个已经发布的组件中修改SQL语句更加方便;
?? ? ? ?4. 能够缓解网络带宽。因为可以批量执行SQL语句而不是从客户端发送超负载的请求。尤其对于较为复杂的逻辑,减少了网络流量之间的消耗。
?? ? ? ?5. 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
?? ? ? ?6. 增强安全性。
?? ? ? ? ? ?a) 通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问。
?? ? ? ? ? ?b) 提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数)。
?? ? ? ? ? ?c) SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。
?
?? ? ? ?1. 可移植性差。由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。
?? ? ? ?2. 代码可读性差,相当难维护。
?? ? ? ?3. 不支持群集
?? ? ? ?4. 大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,从而无法形成通用的可支持复用的业务逻辑框架。
?? ? ? ?5. 如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。
?
?? ? ? ?1. 当一个业务同时对多个表进行处理的时候采用存储过程比较合适。
?? ? ? ?2. 复杂的数据处理用存储过程比较合适,如有些报表处理。
?? ? ? ?3. 多条件多表联合查询,并做分页处理,用存储过程也比较适合。
?? ? ? ?4. 使用存储过程,等需求变动,需要维护的时候,麻烦就来了。不应该大规模使用。
?? ? ? ?5. 适当的使用存储过程,能够提高我们SQL查询的性能,以便于提高我们的工作效率。
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zhanshenlvbu
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2011.8.31
?
?