SQL Server 为代码减负之存储过程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL Server 为代码减负之存储过程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2488字,纯文字阅读大概需要4分钟。
内容图文
存储过程能够用来提高数据库的查询效率。由于它事先被编译过。被储存于内存中,每次执行前。不必被从新编译,所以效率非常高。
存储过程是一组
简单查询 :
CREATE PROCEDURE sp_query_online_info AS SELECT *FROM T_OnLine_info GO
运行存储过程:
EXEC sp_query_online_info
带參数的存储过程:
CREATE PROCEDURE insert_OnLine @cardno varchar(10), @ondate varchar(10),@ontime varchar(10),@AdminName varchar(10) AS INSERT INTO T_OnLine_info (cardNo,onDate,onTime,adminName) VALUES (@cardno,@ondate,@ontime,@AdminName ) GO
调用此存储过程:
exec insert_OnLine '00001' ,'8/21/2014' ,'22:22:22', '刘颖
日结账单涉及多张表的查询,所以这里用存储过程再合适只是了
在这里说一下,机房收费系统的日结账单的逻辑。假设机房管理正规的话,会有一个固定的时间点,操作员(当天工作过的)来找管理员结账,将手里的钱交给管理员,并将操作员结账信息记录在数据库中,记录中包括当天此操作员经手的充值金额和退还金额,将全部操作员经手的充值金额和退还金额汇总后,就是今天日结账单中的充值金额和退还金额。日结账单中的消费金额从 T_line_info 表中获取,本期剩余金额应该从 T_students_info 中获取,昨日卡中剩余金额应该日结账单的前一天的 sumMoney 列。所以日结账单的刷新也是要在有新的操作员结过账的情况下。日结账单中一天应该仅存有一条记录 , 管理员每天下班之前,必须验证日结账单里的账目与自己手里的账目一致才干下班。假设不一致,就说明有操作员还未结账,管理员就不能下班。
可见日结账单是涉及多张表的,在这里用存储过程在合适只是了
CREATE PROCEDURE create_DStatement AS DECLARE @SDate VARCHAR(10) ---结账日期,也就是今天 DECLARE @DATE AS VARCHAR(10) ----离今天近期的日期 DECLARE @remainMoney numeric(18,0) ---昨日剩余金额 DECLARE @RechargeMoney numeric(18,0) ---今日充值金额 DECLARE @consumeMoney numeric(18,0) ---今日消费金额 DECLARE @cancelMoney numeric(18,0) ---今日退卡金额 DECLARE @sumMoney numeric(18,0) ---总金额 SET @SDate =CONVERT(VARCHAR(10),GETDATE(),20) --给@SDate赋值 DELETE FROM T_DStatement_info WHERE SDate=@SDate ----删除日结账单中今天的记录 SET @DATE =(SELECT MAX(CONVERT(VARCHAR(10),SDATE) )FROM T_DStatement_info )----获取距离今天近期的一天日结记录 SELECT @remainMoney =(SELECT sumMoney FROM T_DStatement_info WHERE SDate=@DATE ) IF @remainMoney is NULL SET @remainMoney =0 SELECT @RechargeMoney =(SELECT SUM(CONVERT(numeric(18, 0),rechargeMoney)) FROM T_Statement_info WHERE SDate=@SDate ) IF @RechargeMoney Is nuLL SET @RechargeMoney =0 SELECT @consumeMoney =(SELECT SUM(CONVERT(numeric(18, 0),consume)) FROM T_Line_info WHERE offDate =@SDate ) IF @consumeMoney is NULL SET @consumeMoney =0 SELECT @cancelMoney =(SELECT SUM(CONVERT(numeric(18, 0),cancelMoney))FROM T_Statement_info WHERE SDate =@SDate ) IF @cancelMoney is NULL SET @cancelMoney =0 SELECT @sumMoney =(SELECT SUM(CONVERT(numeric(18, 0),cash)) FROM T_Students_info ) IF @sumMoney is NULL SET @sumMoney=0 INSERT INTO T_DStatement_info (remainMoney,rechargeMoney,consumeMoney,cancelMoney ,sumMoney,SDate ) VALUES(@remainMoney,@RechargeMoney,@consumeMoney,@cancelMoney,@sumMoney,@SDate )
那么存储过程怎样在 VB.net 中调用呢?非常easy
运用存储过程,使我的日结账单的生成,比第一次机房的时候。相对简单了非常多。
内容总结
以上是互联网集市为您收集整理的SQL Server 为代码减负之存储过程全部内容,希望文章能够帮你解决SQL Server 为代码减负之存储过程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。