沈 黎
(四川民族学院 计算机科学系,四川 康定 626001)
当今社会是一个信息社会,信息已成为继劳动力、土地、资本之后的又一大资源.随着世界经济的发展,市场商品的种类越来越多,各个商品销售单位进行交易的对象也越来越广泛,信息量也不断提升,要求的管理手段也越来越高.因而商品管理系统是一个销售单位不可缺少的部分,它的内容对于公司的管理者和顾客来说都至关重要,商品管理系统应该能够为用户提供充足的信息和快捷的查询手段[1].康定民族贸易公司已经实现了商品管理系统,但该公司的商品管理系统在设计上存在不足导致运行效率较低,主要体现在传输数据量大,网络速度慢,保密性差,另外在商品管理系统中由于每次操作都要进行相关的语法检查和编译,使得系统响应的时间较慢并加重了服务器端的负担,这对于查找、更新和维护都带来了很多困难.由于存储过程在创建时已经检查了语法正确性并实现了编译和优化,应用时可直接执行存储过程,加快了执行速度,因此自定义存储过程可以解决以上提到的商品管理系统中的不足.
存储过程是一组为了完成特定功能的T—SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它[2].
使用自定义存储过程访问数据库的优点主要体现在:(1)允许模块化程序设计.只需创建一次存储过程并将其放入数据库,以后可在程序中多次调用该存储过程,并可独立于程序源代码而单独修改[3,4].(2)执行速度更快.存储过程在执行时不需要再检查语法、编译,而且调用存储过程可以大大减少同数据库的交互次数.(3)减少网络流量.一个需要数百行T-SQL代码的操作由一条执行过程代码的单独语句就可以实现.(4)可作为安全机制使用.系统管理员通过对执行某一存储过程权限进行限制,从而实现对相应数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全[5].
创建存储过程时,主要明确存储过程名称、输出/输入参数、所创建的存储过程的功能等,语法格式如下:
自定义存储过程的调用需要给出存储过程的名称,如果带有参数,需要给出参数值.语法格式如下:
存储过程的实现过程是由TStored Proc组件来执行,应用程序发出执行存储过程的命令后,该组件立即将参数传给BDE/IDAPI再由BDE/IDAPI把所有参数传递给DBMS,DBMS接收到参数后立即执行早已编译好的存储过程,并把执行结果传递给BDE/IDAPI[6]、[7].其技术框图如下:
下面以康定民族贸易公司的商品管理系统为例,说明存储过程的设计与实现.
该公司数据库的主要表及关系模式如下:
Goods(商品号,商品名称,库存量,供应商,状态,价格)
Coustomers(客户编号,姓名,地址,电话,出生日期)
Orders(订单号,商品名称,客户编号,数量,总金额,订货日期)
(1)创建一个存储过程proc_1,该存储过程用于查询指定商品所对应的客户信息.
调用存储过程:EXEC proc_1‘春兰空调’
(2)定义一个存储过程,用来实现商品名称不为空时,插入一条记录,商品号由存储过程产生.
存储过程调用:declare@bj int
EXEC proc_2‘舒肤佳香皂’,10000.,‘宝洁中国有限公司’,1,7.00,@bj output
(3)创建一存储过程,输入客户姓名返回订购商品名称,用值15表示用户没有提供参数.值-101表示输入用户名所订购的商品不存在,值0表示操作成功.
本文实现了自定义存储过程及其调用,并应用于康定民族贸易公司商品管理系统中,经过试运行,该公司已经在很大程度上提高了商品管理系统应用程序的运行性能,基本能保证数据的安全性与完整性,并简化了客户应用程序的编程,同时也降低了网络信息流量,增强了应用系统的可维护性,解决了当前商品管理系统存在的不足..因此商品管理系统性能是否能够最好的充分发挥,自定义存储过程有着不可忽视的作用,自定义存储过程不仅适用于商品管理系统,还可以推广到其他行业的数据库管理系统中.
〔1〕胡仲英.基于SQL存储过程的进销存系统的研究与实现[D].哈尔滨工业大学,2008.5.
〔2〕范立南.SQLserver2005实用教程(第二版)[M].北京:清华大学出版社,2006.12.
〔3〕谷震离,杜艮远.SQL server数据库应用程序中数据库安全性研究[J].计算机工程与设计,2007(28).
〔4〕鄢爱兰,鹿江春.数据库存储过程应用研究[J].华南大学学报(自然科学版),2006,20(2).
〔5〕郭琳.SQL server中的存储过程研究[J].重庆文理学院学报(自然科学版),2007,26(4).
〔6〕吴正民.SQL网络数据库中存储过程、触发器及其应用方法[J].西南民族大学学报(自然科学版),2003,29(4).
〔7〕费杨洁.存储过程在管理信息系统开发中的应用[J].河北科技学院学报(自然科学版),2007,37(3).