博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回看存储过程
阅读量:5820 次
发布时间:2019-06-18

本文共 1957 字,大约阅读时间需要 6 分钟。

      

      周六周日写了些查询的窗口,感觉没什么新奇的东西,都是一堆select,后来写的到了注冊,上下机等,在一个方法里面,包括了多个增删改查的过程。可能上一个訪问数据库的过程返回的结果又是下一个訪问数据库读取数据的參数。

也就是说,这些对数据库的增删改查是一个连贯的动作,比方。注冊一个学生的时候。涉及到注冊金额,这个注冊金额同一时候也要写到充值表里面去。

既然他们是一起的。后来就非常自然想到了用存储过程,将多条SQL语句封装起来,这样不仅避免了代码中多次訪问数据库的情况。并且也降低了代码量。

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

   

USE [SecondCharge]GO/****** Object:  StoredProcedure [dbo].[Recharge]    Script Date: 06/09/2014 11:04:35 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER 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 =@StuCardNum	--查询卡内剩余金额		insert into T_RechargeInfo values(@StuCardNum,										@RecTeaName,										@RecDate,										@RecTime,										@RecRMB,										'未结账'										)		update T_StuInfo set StuRMB=(@FirstRMB +@RecRMB) where StuCardNum =@StuCardNum 		--返回信息:充值卡号。上次卡内剩余金额,如今卡内剩余金额。充值日期。充值时间,充值教师		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 =@StuCardNum			and RecDate=@RecDate 			and RecTime=@RecTime
 

 其运行结果例如以下:

    

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

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

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

       在输出的时候,能够用as更改输出表的列名。

为什么要更改列名呢?眼下看到两个优点:

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

          2,还有一种优点就是,在将存储过程运行完之后,将datatable转换为实体集合的时候,由于有一个属性名和  datatable的字段名必须相应的要求,所以,能够说。必需要求select语句中使用as命名字段名,否则实体集合会出现转换失败返回空集合的情况。

你可能感兴趣的文章
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
SettingsNotePad++
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
有关GitHub仓库分支的几个问题
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>