存储过程是SQL 语句和流程控制语句的预编译集合,以一个名称存储并作为一个单元处理。
- 存储过程的基本用法
创建存储过程
create procedure sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
调用存储过程
exec sp_name [参数名]
删除存储过程
drop procedure sp_name
- 存储过程的优缺点
存储过程的优点有:
- 使用存储过程可提高数据库执行速度。在创建时预编译,以后每次执行该存储过程时不需要重新编译,因此执行速度很快。
- 存储过程可以重复使用。它允许模块化程序设计,只需要创建一个存储过程,以后在程序中就可以多次调用。
- 存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中。例如一个需要数百行的SQL代码的操作可以由一条执行存储过程的语句完成,不需要在网络中发送数百行代码。
- 当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
- 一定情况下可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
- 更好的版本控制,通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。
- 增强安全性
- 通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问。
- 提高代码安全,减少SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数)。
- SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(并不是万无一失)。
存储过程的缺点有:
- 如果数据结构发生变化,或者其他原因引起了存储过程的参数或者返回数据的更改,需要更新程序集中的所有相关代码。这使维护更加困难。
- 可移植性差。