存储过程的概念以及优缺点是什么?

来源:互联网 发布:注册表损坏 修复软件 编辑:程序博客网 时间:2024/04/29 23:04

存储过程的概念以及优缺点是什么?写出一个存储过程的大概代码,你是如何在项目中应用的,又产生了什么问题,你是如何解决的?

存储过程是一套已经预先编译好的SQL代码,是SQL语句和可选控制语句的集合及一个独立的数据库对象.存储过程在数据库内可以由应用程序调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程工程。由于存储过程是已经编译好的代码,所以执行的时候不需要分析也不需要再次编译,能够提高程序的运行效率。

存储过程可以包含程序流、逻辑以及对数据库的查询。可以接受参数、输出参数、返回单个或者多个结果集以及返回值。

带简单参数的存储过程

/*带学号参数的存储过程*/

CREATE   PROCEDURE s

@id   int/*参数*/

AS

SELECT   *   FROM  student

WHERE id=@id

GO

 

/*输入参数2001002的学生号,查询学号2001002学生的信息*/

s  2001002/调用形式/

GO

优点补充:

存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问

缺点:

1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。

2.可移植性差:由于存储过程将应用程序绑定到SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。

3. 大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,从而无法形成通用的可支持复用的业务逻辑框架。

4.代码可读性差,相当难维护.