机房收费系统总结之7——存储过程

        效率是每个人追求的目标,其中在数据库中特别能体现效率的对象就是——存储过程。


        一、定义

        将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。


        二、优点
        1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 
        2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
        3.存储过程可以重复使用,可减少数据库开发人员的工作量

        4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权


        三、举例
        机房收费系统中,像结账部分,就会涉及多张表,就可以直接把那些操作步骤集合在一个存储过程中。
先看存储过程中的代码
-- =============================================
-- Author:	张连海
-- Create date: 2013.10.05
-- Description:	完成结账时,对数据库的一系列操作
-- =============================================
Create  procedure [dbo].[Proc_SettleAccounts]
	@operateUserName varchar(20),		--操作员的用户名
	@isSettleAccounts varchar(10),		--结账状态
	@settleAccountsResult varchar(10)	--结账后的结果
as
begin
	update T_Register set isSettleAccounts =@settleAccountsResult where regUser =@operateUserName and isSettleAccounts =@isSettleAccounts
	update T_AbsentCard set isSettleAccounts =@settleAccountsResult where abCardUser =@operateUserName and isSettleAccounts =@isSettleAccounts
	update T_Recharge set isSettleAccounts =@settleAccountsResult where recUser =@operateUserName and isSettleAccounts =@isSettleAccounts
end

        再看系统中D层代码(其他部分就略了)
Public Function UpdateAccounts(ByVal enUserInfo As UserInfoEntity) As Integer Implements ISettleAccounts.UpdateAccounts
    '声明并实例化存储过程
    Dim strProc As String = "Proc_SettleAccounts"

    '声明并实例化参数数据
    Dim sqlParams As SqlParameter() = {New SqlParameter("@operateUserName", enUserInfo.UserName),
                                        New SqlParameter("@isSettleAccounts", "未结账"),
                                        New SqlParameter("@settleAccountsResult", "已结账")}

    '执行并返回查询结果
    Return clsSqlHelper.ExecAddDelUpdate(strProc, CommandType.StoredProcedure, sqlParams)
End Function

        这就是存储过程,通过亲自初尝实践,感觉不算很难。嘿嘿!
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值