存储过程小试——结账

组合查询的时候就遇到了存储过程,那时候觉得高大上,但是仔细一看,分为俩部分,第一部分是参数,第二部分是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 [email protected] and ischeck='未结账'
    update recharge_info set Status ='已结账' where User_ID [email protected] and Status='未结账'
    update cancelcash_info set statue ='已结账' where UserID [email protected] and statue='未结账'
    select * from Daycheck_info where Date [email protected]
    if @@ROWCOUNT =0
     insert into Daycheck_info values (@RemainCash ,@RechargeCash ,@ConsumeCash ,@CancelCsh,@AllCash,@userID,@Date )
     else
     update  Daycheck_info set RemainCash [email protected] ,RechargeCash [email protected] ,[email protected],[email protected],AllCash [email protected],UserID [email protected]
    where date = @Date
END
</span>

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

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方法的问题。

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

时间: 2024-11-05 13:45:50

存储过程小试——结账的相关文章

机房重构(3)——存储过程

在敲机房收费过程中我们都会遇到这样的问题:很多功能实现都需要涉及到多张表的操作,比如充值.退卡.结账等功能的实现.这就需要我们多次对数据库进行操作,不仅代码量大大增加,而且执行效率也会大打折扣.为了提高效率,于是,存储过程就华丽登场了. 1.简介 存储过程是一组为了完成特定功能的语句集,经过编译后存储在数据库中,用户通过制定存储过程的名称并给出参数来执行它.存储过程在运算时生成执行方式并存储在数据库当中,当其再次运行时速度比单个的SQL语句要快.    2.优缺点 1)优点 a.复用性强.存储过

数据库—存储过程。

存储过程: 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 存储过程的建立: 选中存储过程,右击--新建存储过程,则出现下面的代码. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ===========

SQL Server 为代码减负之存储过程

    存储过程能够用来提高数据库的查询效率.由于它事先被编译过.被储存于内存中,每次执行前.不必被从新编译,所以效率非常高. 存储过程是一组sql增删改查的集合,假设程序中的一个功能涉及到对数据库的多次操作.那么就能够事先编译好存储过程.以提高程序执行效率!     简单查询: CREATE PROCEDURE sp_query_online_info AS SELECT *FROM T_OnLine_info GO 运行存储过程: EXEC sp_query_online_info 带參数的

机房重构之存储过程

在重构机房中经常遇到这样的问题:很多功能的实现都需要涉及到多张表的操作,比如充值.结账和退卡等功能的实现.因此,就需要我们多次对数据库进行操作,代码量不仅会增加,执行效率也会大大打折扣.于是,存储过程就应运而生,以大大提高执行效率. 1.简介 存储过程是一组为了完成特定功能的语句集,经过编译后存储在数据库中,用户通过制定存储过程的名称并给出参数来执行它.存储过程在运算时生成执行方式并存储在数据库当中,当其再次运行时速度比单个的SQL语句要快. 2.优缺点 1)优点 a.复用性强.存储过程可以重复

vb.net机房收费系统——存储过程

一.使用背景 机房收费系统结账的时候,需求是当选择一个用户,同时显示该用注册.充值和退卡记录,这些数据来提供结账数据,而结账之后要同时更新卡.充值.退卡表三个表,如果直接写SQl语句的话会是很复杂的.而这些需求可以封装为一个存储过程,点击结账之后只需要传入参数执行存储过程即可. 二.存储过程简介 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个

回看存储过程

周六周日写了些查询的窗体,感觉没什么新鲜的东西,都是一堆select,后来写的到了注册,上下机等,在一个方法里面,包含了多个增删改查的过程,可能上一个访问数据库的过程返回的结果又是下一个访问数据库读取数据的参数.也就是说,这些对数据库的增删改查是一个连贯的动作,比如,注册一个学生的时候,涉及到注册金额,这个注册金额同时也要写到充值表里面去.既然他们是一起的,后来就很自然想到了用存储过程,将多条SQL语句封装起来,这样不仅避免了代码中多次访问数据库的情况,而且也减少了代码量. 下面以充值做个DEM

餐饮管理之结账

结账模块的设计 结账设计的是从开台模块中选择餐桌,连接数据库,选择餐桌的具体点菜信息,算出总价并显示,然后在数据库中添加实付列,找零列. 首先选择餐桌编号,然后点击结账按钮. 代码如下: pay_name = comboBox1.Text;//选择餐桌编号 if(pay_name!="")//选择时候的情况 { string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSP

【机房重构】——存储过程(Stored Procedure)

[前言] 在学习数据库知识时,就曾经接触过存储过程,当时只是如蜻蜓点水一般,短暂的停留,并没有留下什么印象,在进行机房重构学习过程中,又重新认识了存储结构,从开始的抵触,不想用到后来逐渐了解,学着使用,思路越来越清晰,真正去做了才发现了其中的乐趣:常常说学习需要多总结,现在就是在积累,每一次的收获都要整理记录,才能留下深刻的印象,下面就来学习一下存储过程的知识吧. [存储过程的概念] 在采用客户机/服务器(C/S)计算模式的数据库系统中,很多工作可以在客户端完成,也可以在服务器端完成,数据库除了

vb.net机房收费系统重构——存储过程的使用

在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. [存储过程的使用] 首先,打开数据库--存储过程 右键-新建存储过程 CREATE PR