机房收费系统在敲到组合查询功能以前,只是简单的调用数据库,却从来没有用过存储过程,存储过程在数据库这门学科里面算得上是比较高大尚的东西。虽然以前也学过数据库,但是向存储过程、触发器、视图也都只是大概的了解,并没有真正的自己写过。所以,对于不算初学者的我也是有一定的难度。但是这些东西迟早是要学会,这个坎是迟早要过的,虽然组合查询不用存储过程,完全可以实现。但是为了学习新的东西,还是决定要使用存储过程,并不是这个东西有多么难学,而是它确实带来一定的好处。
什么是存储过程?
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
这是百度上对于存储过程的定义,当然,从定义中可以很容易的看出,存储过程是存储在数据库中的经过一次编译后再次使用时就不用再编译的SQL语句集。这就意味着可以减少编译所耗费的时间,提高数据库的运行速度。所以说任何一个设计良好的数据库都应该使用存储过程,可见存储过程在数据库中的地位。
存储过程的优点和缺点
优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、提高性能。存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。
3、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
4、安全性高。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
缺点:
强大的功能背后必定有着致命的缺点,存储过程也不是使用的越多越好。由于存储过程是在运行前编译的,所以如果有引用关系的对象发生改变,受影响的存储过程需要修改后重新编译,如果一个程序中大量的使用存储过程,到程序交付使,随着用户需求的增加会导致数据结构的变化,所以后期的维护会很困难。
存储过程的应用
存储过程在机房的应用,以组合查询为例。
USE [gr_jf]
GO
/****** Object: StoredProcedure [dbo].[proc_StuInfoSelect] Script Date: 2015/6/15 18:02:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[proc_StuInfoSelect]
-- Add the parameters for the stored procedure here
@field1 char(20),@operation1 char(20),@content1 char(20),@logic1 char(20),
@field2 char(20),@operation2 char(20),@content2 char(20),@logic2 char(20),
@field3 char(20),@operation3 char(20),@content3 char(20)
AS
declare @a char(1000)
BEGIN
set @a='select * from Student_Info where ' + @field1 + @operation1 +char(39)+ @content1+char(39)
if @logic1!=''
begin
set @a=@a+char(32)+@logic1+char(32)+ @field2 + @operation2 +char(39)+ @content2+char(39)
if @logic2!=''
begin
set @a=@a+char(32)+ @logic2 +char(32)+ @field3 + @operation3 +char(39)+ @content3+char(39)
end
end
execute(@a)
END
总结:
对于存储过程的使用只是刚刚开始,相信以后会用的很多,以后的理解也会更加深刻。虽然存储过程的好处大家都很清楚,但对于它的使用可不要上瘾哦!看到存储过程的缺点,才能更准确的掌握它,知道什么时候用好,什么时候不用。自认为理解的还很浅显,很基础!