加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

存储过程

发布时间:2020-12-17 00:12:45 所属栏目:大数据 来源:网络整理
导读:最近一直在忙着机房重构,忙碌的日子让自己过得很充实。但是,一个功能怎么也实现不了,也确实让人有点纠结

最近一直在忙着机房重构,忙碌的日子让自己过得很充实。但是,一个功能怎么也实现不了,也确实让人有点纠结啊。比如说,机房收费系统中有充值的功能,这个需要在充值后对相关的表进行操作,既要写入充值记录,也要更新余额。如果按照以前的思路,需要调用好几个方法分别取实现,显得有点麻烦。而且,假如修改代码的话,就可能使整个过程都需要进行修改,明显不符合要求。

这时候一个很好的办法就是利用Sql server中的一些操作来完成,常见的就是存储过程、触发器、视图等。一开始,我使用的是触发器实现几张表的关联,虽然能够实现该过程,但是它也有不足之处,最明显的就是处理后不会给用户返回信息,至于到底完成没有,用户只有通过在数据库中查询才能知道。而存储过程既可以实现表的关联,也能实现返回信息。

那么,如何建立存储过程呢?

首先,打开SQL Server,在自己所对应的数据库中进行操作,打开自己的数据库文件(比如ChargeSystem)-->可编程性-->存储过程,然后右击,新建存储过程,如图所示:



然后就可以在打开的界面中写存储过程了,我以充值为例,其存储过程如下:

--打开数据库
USE [ChargeSystem]
GO
/****** Object:  StoredProcedure [dbo].[PROC_Recharge]    Script Date: 02/02/2015 16:40:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--create procedure [dbo].[PROC_Recharge]

ALTER procedure [dbo].[PROC_Recharge]
--声明所需要的所有字段
@cardID char(10),@studentID char(11),@usermanager char(10),@status char(8),@addcash char(10),@date char(10),@time char(10)
as 
begin
--将数据填入到充值表
insert into T_Recharge (CardID,StudentID,AddCash,ToDate,ToTime,UserManager,Status )values (@cardID,@studentID,@addcash,@date,@time,@usermanager,@status )
--更新学生表
update T_Student set Cash =cast((Cash) as int)+@addcash  where CardID =@cardID 
end 

写好后执行,保存后即可。然后就得在程序中调用了,其D层代码如下:

 Public Function Recharge(enrecharge As En_Recharge) As String Implements IDAL.IManageT_Recharge.Recharge
        '调用存储过程
        Dim cmdText As String = "PROC_Recharge"
        '通过实体类进行传值
        Dim sqlparams As SqlParameter() = {New SqlParameter("@studentID",enrecharge.StudentID),New SqlParameter("@cardID",enrecharge.CardID),New SqlParameter("@addcash",enrecharge.AddCash),New SqlParameter("@date",enrecharge.ToDate),New SqlParameter("@time",enrecharge.ToTime),New SqlParameter("@usermanager",enrecharge.UserManager),New SqlParameter("@status",enrecharge.Status)}
        '定义并实例化helper类
        Dim helper As New sqlHelper
        '判断添加是否成功
        If helper.ExecuteNoQuery(cmdText,CommandType.StoredProcedure,sqlparams) > 0 Then '添加成功
            Return True
        Else
            Return False  '添加失败
        End If
    End Function

这样就可以避免使用过多的方法,减少程序的复杂程度,同时也能后期维护带来便利。这次也就关联了几张表,等以后遇到大的系统的时候,可以通过此方法将多种表关联,较少代码量的同时,也为系统的实现带来了方便。

小结:

通过这次学习存储过程,一方面增加了自己的知识。另一方面,在思想上也有所提高。就从SQL Server提供的词方法来说,不就是全心全意为人民服务的理念吗?今后的我们肯定也会走向IT行业,而且是作为中坚力量,所以,我们必须从中吸取经验,在开发软件程序的时候一定要做到,时刻为人服务,给人提供方便。这样我们的成果才能被人所关注,我们也才能走向成功。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读