机房收费系统小结之7——存储过程
机房收费系统总结之7——存储过程
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
机房收费系统中,像结账部分,就会涉及多张表,就可以直接把那些操作步骤集合在一个存储过程中。
先看存储过程中的代码
效率是每个人追求的目标,其中在数据库中特别能体现效率的对象就是——存储过程。
将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
机房收费系统中,像结账部分,就会涉及多张表,就可以直接把那些操作步骤集合在一个存储过程中。
先看存储过程中的代码
再看系统中D层代码-- ============================================= -- 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
这就是存储过程,通过亲自初尝实践,感觉不算很难。嘿嘿!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
- 1楼wangyajin3335小时前
- 嗯呢,试过了才知道。加油哈。