1、1SQL Server 2008 中的存储过程的研究及应用摘要存储过程是一种重要的数据库对象,恰当地使用存储过程可以简化应用程序的开发,提高系统的运行性能。文章以 SQL Server 2008的存储过程为例,阐述了存储过程的定义、特点及其参数的定义,主要研究了存储过程中出口参数和入口参数的使用,并在 Visual C#中实现调用存储过程的方法。 关键词SQL Server;存储过程;出口参数;入口参数;Visual Studio C# DOI10.13939/ki.zgsc.2016.23.79 1 引言 在以数据库为核心的大中型应用系统中,通常需要处理海量数据,数据的存储和查询速度直接影响
2、应用系统的性能。存储过程是一组保存在数据库中的,经过预先编译和优化的,执行数据库操作的 SQL 语句。存储过程可以作单独的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程作为数据库对象存储在数据库中,执行一次后,其编译好的代码存储在高速缓冲存储器中,再次使用时直接调用,无需再次编译即可执行,使执行速度大大提高。因此,使用存储过程完成对数据库的操作,可以有效提高数据存储和查询的速度。同时,存储过程还可以降低整个应用程序的复杂性,提高重用性、安全性和可伸缩性。本文详细介绍在 Visual C#开发平台下,主要用 Transact-SQL 编写存储过2程存储在 SQL Server 中,
3、并创建应用程序来调用存储过程,返回结果,然后对数据结果进行处理。且都提供对存储过程直接访问的功能。通过具体的例子,介绍了在 SQL Server 数据库中如何使用存储过程实现复杂的数据处理功能。 当应用程序需要访问服务器上的数据时,在不建立存储过程的情况下。通过网络将 Transact-SQL 语句发送至服务器,服务器对语句编译后再传递给客户端。这种方式对于大量数据处理的事务,增加了网络上的传输量,加重了客户端的负担。 存储过程就是一种 Transact-SQL 语句,编译在单个的执行计划中。它在服务器端对数据库记录进行处理,然后将结果发给客户端。这样,既充分利用了服务器强大的计算能力,也避免
4、了应用程序执行时需要大量数据从服务器下载到客户端,减少了网上的传输量,同时也提高了客户端的工作效率。 2 存储过程的特点 第一,执行速度快:存储过程在创建时就经过了语法检查和性能优化,因此在执行时不必再重复这些步骤。存储过程经过第一次调用后,驻留在内存中,不必再编译和优化,所以执行速度很快。第二,模块化的程序设计:存储过程经过了一次创建以后,可以被无数次调用。用户可以独立于应用程序而对存储过程进行修改。可以按照功能模块的不同,设计不同的存储过程以供使用。第三,减少网络通信量:存储过程中可以包含大量的 Transact-SQL 语句。但存储过程在调用时只需一条语句就可以实现,所以大大减少了网络上
5、数据通信的传输。第四,保证系统的3安全性:设置用户通过存储过程来对某些关键数据进行访问,但不允许用户直接使用 Transact-SQL 或企业管理器来对数据进行访问。 3 存储过程 3.1 存储过程的创建 存储过程是用过程头定义的,过程头包括关键词 Procedure、过程名和参数清单,紧接过程头后可定义任何过程范围的变量,代码的主体被定义为一个或多个块,块使用 Begin 和 End 语句限定范围,还可以附带错误处理 Exception 块。所有过程的定义都必须用 End 语句作为结束。创建存储过程可使用 SQLPLUS、Transact-SQL、可视化数据库工具(Visual Databa
6、se Tools) 、Oracle 过程生成器(Oracle Procedure Builder)等工具。 3.2 存储过程的结构和定义语法 3.3 存储过程的参数 参数用于在存储过程和调用存储过程的应用程序或工具之间交换数据,存储过程可以有零个或多个参数,这些参数会被用于程序逻辑中确定的某些动作,参数名和参数的数据类型被定义于程序设计单元的首部。存储过程的参数按其用途可分为两类:入口参数和出口参数。入口参数可用来把值传递给存储过程使用。入口参数的语法如下: Create Procedure_name param1 data_type,paramN datatype 例如:create pro
7、cedure usp_input temp_name varchar(30) total int,current_date datetime 出口参数采用变量的形式向调用过程或程序返回结果值。声明出口4参数的语法如下: Create procedure procedure_name parameter_name datatype OUTPUT 例如:create procedure usp_test p1 int OUT Declare v_prodcount INTEGER 存储过程参数的传递方式主要有标准方式(按值传递)和使用参数名(按名传递) 。 3.4 存储过程的执行 用 EXECUT
8、E 语句可以运行一个存储过程。语法如下: 3.5 存储过程的删除 不再需要存储过程时可将其删除。语法如下: 3.6 存储过程的调用 存储过程的应用方法是多种多样的,在不同的编程语言中使用的语法也各有差异。但调用存储过程的思路是基本一致的,一般可归纳为:连接数据库;定义输入输出参数;执行存储过程;关闭数据库连接。 4 存储过程的应用实例 为了提高数据的运行效率,在我们设计的教务管理系统中,我们应用了如下的存储过程从管理员角度创建增、删、改、查几个存储过程: (1)增加管理员。 5 结论 本文以 SQL Server 2008 数据库为例,通过典型的实例,介绍了使5用存储过程进行复杂数据处理的方法
9、,开发人员稍加修改即可用于自己的应用程序开发。此外,从以上应用实例,我们可以体会到存储过程技术在数据编程方面的强大功能。在实际网络系统的开发工作中,由于存储过程的引入,可以使开发者的编程效率大大提高。 在数据库系统开发中,使用存储过程可以提高整个系统与数据库交互的性能,可以让数据库管理系统来优化对数据库的存取,但存储过程中业务逻辑也并非用得越多越好。所以在实际工作中,要根据具体情况和实际工作经验来确定如何编写存储过程。 参考文献: 1冯洪峰.存储过程在 SQL Server2005 中应用J.电脑编程技巧与维护,2010(14). 2蒋社想,程翠平.基于 SQL Server 存储过程的评标专家系统的研究与实现J.长沙通信职业技术学院学报,2011(3). 3韦晨艳,杨键鸣,姚斯立.SQL 数据库中存储过程.触发器的应用研究J.中国信息界,2011(6). 4?蛟平?.存储过程在教学管理信息系统中的灵活应用J.电子制作,2014(18). 5杨铭.SQL Server 中存储过程技术的研究J.科技视界,2014(34).