存储过程小试——结账

       组合查询的时候就遇到了存储过程,那时候觉得高大上,但是仔细一看,分为俩部分,第一部分是参数,第二部分是sql语句。在结账和下机的时候遇到了对多个表的增删改查,学习了一下,觉得对于一些简单的存储过程也有点得心应手。

存储过程概况:

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便能在外部程序调用的一种数据库对象,他可以视为数据库中的一种函数或者子程序。说的明白点,也就是对很多条的sql函数进行了封装,然后在我们的重构D层进行了调用。更加的增强了sql语言的灵活性和应用性。

要写存储过程了,我们了解一下存储过程的格式

create procedure sp_name

@[参数名] [类型],@[参数名] [类型]

as

begin

.........

end

   详细的了解,请查看超链接http://baike.haosou.com/doc/2045557-2164405.html

存储过程小试:

我们在结账的时候,点击结账按钮,我们要对student_info,recharge_info,cancelcash_info的状态进行更新,还要对Daycheck_info表进行插入。所以用存储过程可以很轻松的解决这多的sql语言的问题。


新建存储过程:

存储过程——右击新建存储过程。然后在数据库的右面打开了存储过程的代码框,就在里面写代码啦。我们写的代码应该是CREATE PROCEDURE,然后进行执行,然后保存存储过程,对存储过程命名,关闭sql server,重新打开,就会看到我们写的代码,在结账的单击事件下,我写的代码具体如下:

<span style="font-size:18px;">-- =============================================
-- Author:		<李芬>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE[dbo].[proc_AlterAccount]
	-- Add the parameters for the stored procedure here
	@userID varchar(10),  
    @RemainCash nchar(10),  
    @RechargeCash nchar(10),  
    @ConsumeCash nchar(10),  
    @CancelCsh nchar(10),
	@AllCash nchar(10),
	@Date  nchar(50)
AS
BEGIN
	update student_info  set ischeck ='已结账' where userID =@userID and ischeck='未结账'  
    update recharge_info set Status ='已结账' where User_ID =@userID and Status='未结账'  
    update cancelcash_info set statue ='已结账' where UserID =@userID and statue='未结账'  
    select * from Daycheck_info where Date =@Date  
          
     insert into Daycheck_info values (@RemainCash ,@RechargeCash ,@ConsumeCash ,@CancelCsh,@AllCash,@userID,@Date )  
    
END
</span>

         

      在这段代码中,我们可以很清楚的看到存储过程的结构,同时在最后一个参数的后面,也就是as的前面是没有那个逗号的,写的时候注意。重新打开就出现了下面我的存储过程啦。


存储过程小试——结账_第1张图片

   

D层调用存储过程:

<span style="font-size:18px;"> ''' <summary>
    ''' 对结账的单击事情
    ''' </summary>
    ''' <param name="Eaccount"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Iaccount(Eaccount As DayCheckinfo) As Boolean Implements Iaccount.Iaccount
        Dim strSql As String
        Dim Erecharge As New Entity.Rechargeinfo
        strSql = "proc_AlterAccount"
        Dim paras As SqlParameter() = {New SqlParameter("@userID", Eaccount.UserID),
                                       New SqlParameter("@RemainCash", Eaccount.RemainCash),
                                       New SqlParameter("@RechargeCash", Eaccount.RechargeCash),
                                       New SqlParameter("@ConsumeCash", Eaccount.ConsumeCash),
                                       New SqlParameter("@CancelCsh", Eaccount.CancelCash),
                                       New SqlParameter("@AllCash", Eaccount.AllCash),
                                       New SqlParameter("@Date", Eaccount.DDate)}

        Dim dt As Boolean
        dt = Sqlhelper.SqlHelper.ExecuteNoQuery(strSql, CommandType.StoredProcedure, paras)
        Return dt
    End Function</span>

      由于我的sqlhelp仅仅封装了四个方法,分别为查询(有参数、没有参数),非查询(有参数、没有参数),所以在写存储过程的时候,要把查询的写成一个存储过程,非查询的写成一个,不要混了,避免出现无法调用sqlhelp方法的问题。

    

      什么新事物,都看着很难,于是不去做,还走老路。于是就和时代脱节啦。殊不知看着难的事情做起来不一定难,什么都需要一个过程。加油。。。。。    

                      


你可能感兴趣的:(存储过程小试——结账)