Why use it ?
我们为什么要使用存储过程?
存储过程的优缺点
♛ 优点
❄ 执行快
存储过程在执行时是会被SQL优化缓存的,而SQL语句则没有。存储过程比直接写SQL语句执行起来的速度快。
❄ 易修改
存储过程修改比较快和方便,如果是在编写程序时,只是通过存储过程的名来调用存储过程,一个程序可能在多个地方被引用,所以也可以简化程序。在修改时也比较方便,不用一句一句的去修改。
❄ 增强安全性
a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;
b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);
c、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。
➼ 缺点
☏ 使用操作有范围
如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。
☏ 可移植性差
由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。
☏ 不支持OO
大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,从而无法形成通用的可支持复用的业务逻辑框架。
☏ 难维护
代码可读性差,相当难维护.
How to use it ?
怎么使用?
仍给你一个例子。
♒
现在我就来总结一下C#使用SQL存储过程完整的流程,以SQL2005为例。
先简单的说说什么是存储过程:存储过程就是固化在SQL数据库系统内部的SQL语句,这样做的好处是可以提高执行效率、提高数据库的安全性、减少网络流量。接下来就讲解如何在数据库中建立一个存储过程。
打开SQL2055数据库,展开“数据库”节点,找到你使用的数据库(目的数据库),展开该数据库节点,找到“可编程性”节点并展开,就可以看到“存储过程”了,在“存储过程”上点击右键,新建存储过程。然后会弹出查询分析器,在这输入创建代码就可以了。
代码如下:
-
create proc myproc
-- 创建一个存储过程,名称为myproc
-
--这里写参数,如果有的话;没有的话就空着
-
as
-
--这里写具体语句,可以写N个
-
go
--可加可不加,go的意思是另起一页,相当于下一个功能块。如果下边不写语句,可以不加!
例如:
-
create proc myproc
-