将一些固定的操作集中起来由SQL服务器来完成,实现某个特定任务,这就是存储过程。
存储过程是SQL语句和可选控制流程语句的预编译集合。
是一种封装重复任务操作的方法,以一个名称存储,作为一个单元处理。
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。
存储过程的优点:
1、封装事务规则。
2、允许标准组件式编程
3、能够实现较快的执行速度(批处理的T——SQL语句每次运行时都要进行编译和优化,存储过程是预编译)
4、能过减少网络流量
5、被作为一种安全机制来充分利用(避免非授权用户对数据的访问)
存储过程的运行过程:
1、该过程被划分成部件片段
2、检查引用数据库中其它对象(表、视图等)的部件,确保引用的对象是存在的,这也被称为分解。
3、一旦分解完成,该过程的名字将存放到sysobjects表中,而创建存储过程的代码存放在syscomments表中
4、然后编译,并且,编译过程中将创建如何运行查询的蓝本。该蓝本通常称为常规计划或查询树,查询树存放在sysProcedures表中。
5、存储过程首次运行时,读出查询计划并完全编译成过程计划,然后运行。这样,节约了每次运行存成过程的语法检查、分解和编译查询树的时间。