回看存储过程

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

下面以充值做个DEMO,看一下这个存储过程:

USE [SecondCharge]
GO
/****** Object:  StoredProcedure [dbo].[Recharge]    Script Date: 06/09/2014 11:04:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Recharge]		--充值

	@StuCardNum nchar(10),	--卡号
	@RecTeaName nchar(10),	--充值教师
	@RecRMB money 	--充值金额

as
	declare @FirstRMB money	--定义一个上次卡内余额的变量
	declare @RecDate nchar(10)	--定义充值日期
	declare @RecTime   nchar(10)	--定义充值时间

	Select @RecDate= CONVERT(varchar(100), GETDATE(), 23)
	Select @RecTime=CONVERT(varchar(100), GETDATE(), 24)

	--1,先取出此卡号对应的现在的总金额
	--2,先向充值表里面写入一条充值记录
	--3,然后更新学生信息表里面的金额
	--4,最后返回充值信息表

	select @FirstRMB=StuRMB from T_StuInfo where StuCardNum [email protected]	--查询卡内余额

	insert into T_RechargeInfo values(@StuCardNum,
										@RecTeaName,
										@RecDate,
										@RecTime,
										@RecRMB,
										'未结账'
										)

	update T_StuInfo set StuRMB=(@FirstRMB [email protected]) where StuCardNum [email protected] 

	--返回信息:充值卡号,上次卡内余额,现在卡内余额,充值日期,充值时间,充值教师

	select @StuCardNum as StuCardNum,
			@FirstRMB as FirstRMB,
			StuRMB as LastRMB,
			@RecDate as RecDate,
			@RecTime as RecTime,
			RecTeaName
	from T_RechargeInfo,T_StuInfo
	 where T_RechargeInfo.StuCardNum =T_StuInfo .StuCardNum
			and  T_StuInfo.StuCardNum [email protected]
			and [email protected]
			and [email protected]

其执行结果如下:

解释一下:这个过程大致是这个样子的:

    --1,先取出此卡号对应的现在的总金额
	--2,先向充值表里面写入一条充值记录
	--3,然后更新学生信息表里面的金额
	--4,最后返回充值信息表

首先定义好传入的参数:卡号,充值教师,充值金额;然后,按照大致的过程,为每一条过程写一个SQL语句;最后是输出部分,如果输出结果是单个参数,可以用output,也可以如上所示,输出个表。

在输出的时候,可以用as更改输出表的列名。为什么要更改列名呢?目前看到两个好处:

1,在绑定DataGridView的时候,不用手动加载HeaderText,这种是对于返回到U层是datatable的情况。

2,另一种好处就是,在将存储过程执行完之后,将datatable转换为实体集合的时候,因为有一个属性名和  datatable的字段名必须对应的要求,所以,可以说,必须要求select语句中使用as命名字段名,否则实体集合会出现转换失败返回空集合的情况。

回看存储过程

时间: 2024-08-01 23:23:18

回看存储过程的相关文章

CNTV视频回看下载地址

这其实不是新方法了,这个方法早在五六年前大家就在用,至今也没失效.但是五六年前那时候这个方法可以下载到过去三个月内CNTV直播过的视频,而现在只能下到一个星期的.之所以要下载回看版本,是因为比栏目版本的画质要好一些. CNTV会把回看的视频按5分钟一段分割,而不管节目的起始时间,所以你得算一下你要的视频都是分布在哪个时间段. 然后使用这样的地址:http://v.cctv.com/flash/live_back/nettv_cctv1/cctv1-2015-07-25-01-002.mp4 其中

希望在劫难中回看庸常的幸福

记住,好好活着,活过一切歧视.欺侮.不公和厄运. 并把这句话,作为自己一生的宗教. 如果打不败命运,你就活过命运.也就是说,它难缠,你要比它更难缠.记住,坚韧是最实用的方式,这样也许悲壮,但悲壮的活胜过悲怆的死. 曾看过"文革"中好多被批斗的照片,惨绝人寰的折磨和羞辱,没有几个人能挺过来.我觉得,那些咬牙活下来的人,便是大胜人生的人.与这些劫难相比,一帆风顺的日子里,得一个高位,赢一些金钱和名声,要肤浅得多.当然了,真正的深刻,也不是来自劫难,而是劫难之中敢于九死一生. 在绝望里,死永

流媒体服务器 NTV Media Server G3 电视回看功能赏析

电视回看是NTV Media Server G3的一个有趣的功能,主要用于电视直播.监控直播类视频流的回看.像电视频道这类直播流具有长时间不间断直播的特征,不能像处理普通直播流一样按版本号或者按事件发生的起止时间来录制和回看,需要按绝对时间线(UNIX时间)进行不间断的录制和索引,并提供按照时间线回看视频的功能.基于这个需求,NTV Media Server G3 提供了一个电视流回看界面:界面的下方有日期选择器和时间刻度,在选择日期后,系统会检索该日期的回看视频,并体现到时间刻度线上(0~24

iOS10 资料汇总:值得回看的 10 篇 iOS 热文

本文精选了 iOS大全 9月份的10篇热门文章.其中有软件推荐.技术分享及iOS10.Xcode8新特性等. 注:以下文章,点击标题即可阅读 <兼容iOS 10 资料整理笔记> 本文整理iOS 10 相关资料以及开发中遇到的问题等等. <适配 iOS10 以及 Xcode8> 现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本,童鞋们有

回看 零 空(&quot;&quot;) 空白(&quot; &quot;) NULL

对于刚接触计算机语言(java,JavaScript,c++等)的人群,他们可能一直搞不清NULL,空,零的区别,下面我叙述一下我的理解: 如果你查词典对NULL的解释,答案有可能为零,就是没有的意思,但是对计算机语言来说,null其实并非简单的没有,而是连空都缺席了,  NULL:例如你们搬了新家,爸爸让你看下厨房还有多少油,你去厨房发现连油桶都没有,此时你怎么回答,对计算机来说此时就是null来表示. 第二天,你爸爸买来一桶5升的油,此时油的多少就是5L,对计算机来说就是5 零:过了一段时间

存储过程在程序慢而在Management Studio快的原因

1,存储过程在程序慢而在Management Studio快,分析查询计划,发现生成了两个执行计划,说明二者用的不是同一个查询计划,因参数嗅探问题引发此种情况.2,产生不同执行计划原因是:引起执行计划重新编译的原因之一是上下文环境发生改变,SET开关.这些开关会影响语句执行的行为,甚至带来不同的结果,而sqlserver要另生成新的编译计划.而在Management Studio中,默认打开了SET ARITHABORT ON 在查询执行过程中发生溢出或被零除错误时,终止查询,而程序中是不打开的

谈谈WebService开发-应用篇(三)-教你如何看WSDL文档

作为webservice客户端开发,在日常工作中可能经常会拿到一个对方提供的wsdl地址或文档,那么拿到这个地址后我们如何编写客户端调用代码呢,前面几篇只是以个人经验的方式写了下,那么真正要根据wsdl文档来编写客户端调用代码就必须学会看懂wsd文档.下面就结合之前的demo来深入剖析下wsdl文档,最后以图解的方式形象说明下. 本文以之前的SayHello的Demo来深入分析下wsdl文档的几个部分,个人认为可以共分6部分,下面分别介绍: <definitions/> 这部分在基础篇里已经介

看我怎样拿一百万分创业

2011年注册51CTO,就是为了下载学习资源,但我没钱,也没有优秀资源可以分享.为了赚取下载豆,于是我每天都坚持登录51CTO下载栏目领取2颗下载豆.凭着我的这份坚持,终于在2013年参加了一次51CTO举办的博文活动--请给你的老板写一封信.那是我第一次在51CTO写博文,感觉爽翻了.不知不觉,一幌一年多,终于,写下了我的第二篇博文. 以上纯粹扯谈,感谢51CTO这么多年一直为我默默提供学习资料,以下正文. 首先简单的自我介绍:IT男(背心,短裤加拖鞋那种),网络专业,建站行业,12年毕业,

你真的完全了解Java动态代理吗?看这篇就够了

之前讲了<零基础带你看Spring源码--IOC控制反转>,本来打算下一篇讲讲Srping的AOP的,但是其中会涉及到Java的动态代理,所以先单独一篇来了解下Java的动态代理到底是什么,Java是怎么实现它的. 动态代理看起来好像是个什么高大上的名词,但其实并没有那么复杂,直接从字面就很容易理解.动态地代理,可以猜测一下它的含义,在运行时动态地对某些东西代理,代理它做了其他事情.先不去搞清楚这个动态代理真正的含义,我们来举个生动的例子来理解下它到底做了什么. 一个例子 一个程序员Devel