存储过程你会了吗?不会别拍我!

What?

  • 一组为了完成特定功能的SQL语句的集合,经编译后存储在数据库中。其实存储过程是什么,哪儿都有解释的。在这里不赘述。

Why

  • 为什么要使用存储过程?简而言之,就是要提高系统的效率和安全性。
  • 存储过程使用的必要性?我们知道,存储过程是与内存打交道的,因此它的效率大家可以知道了,它的效率是一般的SQL语句所无法比拟,尤其是使用嵌套等。

How

  • 以机房收费系统为例,
  • 创建:机房收费系统的结账部分(汇总)
  • Create PROCEDURE Proc_CheckOut
    	@OperateUser varchar(50),
    	@status varchar(9),
    	@IsCheckOutStatus varchar(50)
    AS
    BEGIN
    	select  	
    		(select count(cardID )  from T_CancelCardInfo where operateUser =@OperateUser) as 退卡张数,
    		(select sum(returnCash )  from T_CancelCardInfo where operateUser =@OperateUser and isCheckStatus =@IsCheckOutStatus ) as 退卡金额 ,
    		(select sum(rechargeCash ) from T_RechargeInfo where operateUser =@OperateUser and isCheckStatus =@IsCheckOutStatus ) as 充值金额 ,
    		(select count(ID ) from T_RegisterCardInfo ) as 总售卡张数,
    		(select sum(rechargeCash ) from T_RechargeInfo where  isCheckStatus =@IsCheckOutStatus) as 充值总金额 ,
    		(select sum(returnCash )  from T_CancelCardInfo where isCheckStatus = @IsCheckOutStatus) as 退卡总金额 ,
    	Count(ID ) as 售卡张数  from T_RegisterCardInfo where operateUser =@OperateUser and status =@status
    END
  • 调用:D层关于汇总方法中的代码,调用存储过程
  • Public Function SelectCollectInfo(enUserInfo As Entity.UserInfoEntity) As DataTable
    
            Dim procName As String              '存储过程名
            Dim sqlhelper As New SqlHelper      '实例化SQLHelper
            Dim paras As SqlParameter()         '定义一个数组,传参
            Dim dt As DataTable
    
            '调用存储过程
            procName = "proc_CheckOut "
    
            '传参
            paras = New SqlParameter() {New SqlParameter("@operateUser", enUserInfo.UserID),
                                        New SqlParameter("@status", "使用"),
                                        New SqlParameter("@isCheckOutStatus", "未结账")}
            '调用SQLHelper中的查询方法
            dt = sqlhelper.ExecuteQuery(procName, CommandType.StoredProcedure, paras)
            Return dt
    
        End Function

由于误删了一篇博客,因此在这里补出该篇博客。这篇博客主要讲解了存储过程,自我感觉讲的挺简单的,利用小星师哥的一句话,如果你再看不懂个,就别拍了我哈。



你可能感兴趣的:(存储过程你会了吗?不会别拍我!)