3、存储过程主要是在服务器上运行,减少对客户机的压力。
4、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
实例 在机房收费系统中最让我们头疼的一个功能模块就是组合查询功能,在这个系统中有四个一样的窗体,其中的代码都是差不多的,都是根据不同的条件对不同的表进行查询 *** 作,在第一遍的时候,我们就理由字符串的拼接完成一个后,就利用复制代码的手段来实现,这样就会出现大量的重复代码,在重构的时候再次遇到这个问题,不会在重复的复制代码,而是用到了模板方法(在介绍组合查询的时候详细介绍)和存储过程,下面给大家分享一下:
-- =============================================-- 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 ENDEXECUTE(@Tempsql) END这样我们的D层就非常的轻松了,只负责调用这个存储过程和传入相应的参数就可以了,这样我们就可以传进来的参数对不同的表进行 *** 作了。
触发器 VS 存储过程 相同点 两者都是较复杂的SQL语句集,简单的说触发器是特殊的存储过程,当我们在系统中需要对多个表进行同时 *** 作的时候,我们就可以考虑用它们两个,这样是D层在实现复杂功能时压力能小点。 当然我们在使用的时候需要综合考虑一些问题,像代码的调试和维护,数据库的迁移(不同的数据库支持的触发器和存储过程的格式不同)等问题。 不同点 一、触发器不能用EXECUTE语句调用,当我们对数据库中的表进行Update、Delete、Add等 *** 作激活自动执行的,而存储过程是我们通过存储器的名称直接调用的。
二、触发器是比较霸道的执行,只要我们满足了触发条件,用户是不能控制执行的。而触发器的执行是用户在代码中控制调用的,这样显得比较灵活一些。
小结 触发器和存储过程有着很强大的作用,当我们借助两者的时候我们可以再D层用简单的代码实现很复杂的功能,同时在很大程度上提高我们系统的效率,但是在使用的时候需要综合考虑,不能过度的使用两者。因为两者不单可以破换数据库的结构,给后期的代码调试和维护也增加了负担。所以,我们应该权衡利弊后在使用。 总结
以上是内存溢出为你收集整理的【机房重构】——存储过程和触发器全部内容,希望文章能够帮你解决【机房重构】——存储过程和触发器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)