引言
基本知识
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的sql 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。大概分为三类:系统、本地、临时、远程、扩展存储过程几类。
作用
1、存储过程因为sql语句已经预编绎过了,因此运行的速度比较快。
2、存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程主要是在服务器上运行,减少对客户机的压力。
实例
在机房收费系统中最让我们头疼的一个功能模块就是组合查询功能,在这个系统中有四个一样的窗体,其中的代码都是差不多的,都是根据不同的条件对不同的表进行查询操作,在第一遍的时候,我们就理由字符串的拼接完成一个后,就利用复制代码的手段来实现,这样就会出现大量的重复代码,在重构的时候再次遇到这个问题,不会在重复的复制代码,而是用到了模板方法(在介绍组合查询的时候详细介绍)和存储过程,下面给大家分享一下:-- ============================================= -- Author: 郑浩 -- Create date: 2014-12-26 -- Description: 用于组合查询时和数据库交互 -- ============================================= ALTER PROCEDURE [dbo].[PROC_GroupCheck] -- Add the parameters for the stored procedure here @cobFieldName1 varchar(50),@cobOperator1 varchar(50),@txtContent1 varchar(50),@cobFieldName2 varchar(50),@cobOperator2 varchar(50),@txtContent2 varchar(50),@cobFieldName3 varchar(50),@cobOperator3 varchar(50),@txtContent3 varchar(50),@cobRelations1 varchar(50),@cobRelations2 varchar(50),@tableName varchar(50) AS declare @Tempsql varchar(500)--临时存放sql语句 BEGIN SET @Tempsql='SELECT * FROM '+@tableName +' WHERE ' +@cobFieldName1 +@cobOperator1+char(39) + @txtContent1 + char(39) --SET @Tempsql='SELECT * FROM '+'ZH_StudentInfo' +' WHERE ' +@cobFieldName1 +@cobOperator1+char(39) + @txtContent1 + char(39) if (@cobRelations1 is not null) BEGIN SET @Tempsql=@Tempsql+@cobRelations1+CHAR(32)+@cobFieldName2 +@cobOperator2+CHAR(39)+@txtContent2+CHAR(39) if (@cobRelations2 is not null) BEGIN SET @Tempsql=@Tempsql+@cobRelations2+CHAR(32)+@cobFieldName3+@cobOperator3+CHAR(39)+@txtContent3+CHAR(39) END END EXECUTE(@Tempsql) END这样我们的D层就非常的轻松了,只负责调用这个存储过程和传入相应的参数就可以了,这样我们就可以传进来的参数对不同的表进行操作了。