机房重构——存储过程

原来只是见过存储过程这几个字,知道有这么一个东西,但并未真正揭开它的面纱去真正了解它,但是在敲机房的时候就遇到了难题,要修改数据库中多张表的数据,使用SQL语句的话会很复杂,究竟什么可以让我们的效率提高呢?存储过程可以做到,这就迫使我不得不去再次触碰存储过程。

定义:在大型数据库中,一组完成特定功能SQL语句的集合。相当于就是将原本需要再D层多次写的SQL语句,在数据库中写到了一块。

何时才会用到存储过程,我们从定义中就能看出存储过程是SQL语句的集合,当我们使用的SQL语句复杂时,使用存储过程能够简化我们的工作。对于复杂程度我们要有很好的估量,适时的使用存储过程,并不是所有的都用到存储过程就非常好。

下面我就以注册卡为例来说明一下如何使用存储过程:

USE
/****** Object:  StoredProcedure [dbo].[PROC_Register]    Script Date: 03/15/2015 15:32:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<sisi>
-- Create date: <2015-3-9 12:02:28>
-- Description:	<注册>
-- =============================================
ALTER PROCEDURE [dbo].[PROC_Register]
	-- Add the parameters for the stored procedure here
	@cardID char(10),
	@studentID char(10),
	@account char(10),
	@cardType char(10),
	@usingState char(10),
	@remark varchar(50),
	@registrationDate char(10),
	@registrationTime char(10),
	@UserID char(10),
	@studentName char(10),
	@sex char(10),
	@department char(10),
	@grade char(10),
	@studentclass char(10),
	@RechargeDate char(10),
	@RechargeTime char(10),
	@RechargeMoney decimal(18,0)
AS
BEGIN
	--添加卡表
	insert into T_CardInfo (cardID ,studentID ,account,cardType,usingState ,remark,registrationDate ,registrationTime ,UserID ) values (@cardID,@studentID,@account,@cardType,@usingState ,@remark,@registrationDate ,@registrationTime ,@UserID )
	--添加学生表
	insert into T_StudentInfo (studentID,studentName ,sex,department ,grade,studentclass )values (@studentID,@studentName,@sex,@department ,@grade,@studentclass )
	--添加到充值记录表
	insert into T_RechargeRecord (cardID,RechargeDate ,RechargeTime ,RechargeMoney ,UserID )values (@cardID,@RechargeDate,@RechargeTime ,@RechargeMoney,@UserID )
END

看到存储过程,这另我想到我们经常用到的函数,函数也能够实现某种功能,它们二者有何区别呢?

通过上面的对比可能对存储过程有了更深的理解,函数我们已经学过并且经常使用,通过将存储过程与函数联想到一起,这样就不会再惧怕它了,我们并不是没有学过,只是可能还没有发现自己已经见过,要从已有的知识中发掘陌生事物的原型。

时间: 2024-11-08 10:24:34

机房重构——存储过程的相关文章

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

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

【机房重构】SQl之存储过程

上篇博客介绍了SQl视图的使用,这篇博客通过内容和实例应用来简单介绍一下存储过程. 在机房重构的过程中,犯了个大忌(数据库设计在重构过程被修改了),所以影响了一个功能的实现,就又重新敲了一下机房收费系统退卡功能.正如"塞翁失马,焉知非福",纯三层的代码实现变成了利用存储过程之后的完美实现.期间的磕磕绊绊都让我们对存储过程加深了理解. 存储过程: 定义: 当需要写多条SQl语句的时候,就可以使用存储过程,在数据库中建立存储过程.之后在VS中通过调用存储过程来使用. 百度百科:存储过程(S

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

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

【机房重构】—存储过程当媒人

以下是本人亲眼所见的机房重构帅小伙(简称重构),借助存储过程媒人(简称存储)与数据库大美女(简称:库)交往的经历,和大家分享一下. 那是一个风和日丽的白天,重构帅小伙独自一人走在处处飘香的初夏的校园中,他一直在思考,如何与库美女更容易的交往呢?以前重构去找库美女的时候总是需要先打一个电话(链接一个表),再问问库美女在哪里(再链接一个表),然后才能去找库美女(向两个表中存入数据):重构绞尽脑汁终于想出了一个办法, 他通过手机中的GPS(存储过程)直接定位库美女的位置,然后突然给库美女一个惊喜,这样

机房重构-完结篇

机房重构已经结束了,自从软考开始,光顾着准备软考和三级网络等级考试就没来得急总结.软考一开始,突然觉得时间好少,时间过得好快.这节奏,有点飕飕的. ---------------------技术总结: 熟悉了对Visual Studio这一开发环境的使用,深入了解了VB.net语言基础有了一定的认识并且学会使用.这一次使用三层架构,利用分分层的思想,深入理解了各层的职责.代码规范,这一次再敲代码的时候先学了一下代码规范,也把头文件注释设计好,让自己的代码漂亮一点. 最终的要思想还是面向对象,根据

机房重构——视图

视图.存储过程.触发器等等早就听说过,却没有真正接触过,一直处在一个以后再说的状态中,逃是逃不掉了. 机房重构,重构出了什么?留着这个疑问.重构完以后再做总结. 视图:在SQL中,外模式一级数据结构的基本单位是视图,就是从若干个基本表和(或)其他视图构造出来的表.其实就是一张虚表. 注意:在使用视图的时候,应当提前设置好关联表的主外键. 在机房收费系统里功能之一,学生查看余额时,用到了两张表的内容,Card表里的状态和余额,其他信息都来自学生表. 视图的创建和删除: 方法一:使用SQL语句创建视

个人机房重构总结

个人版的机房重构花费了一个月的时间,也算是完成了.现在整理一下三层机房收费系统里面的小问题.对于使用三层架构的机房收费系统来说,数据库的设计是一个重点.但是三层架构的小实例也是经典. 为什么很多人在开始项目之后,都无从下手? 因为三层的那个实例没有看懂(并不是没有实现).三层架构的登陆实例,实现不是目的,我们就是要从这个实例中学习,三层的是如何划分,并且是如何调用的. 机房重构的准备工作:     在学习完三层架构理论之后,紧接着的项目就是个人版机房收费系统. 对于三层结构的登陆实例,如果可以理

【机房重构】SQL之视图

最近在重构机房收费系统,越往后就会越感觉到这里更多的是对之前学过知识(数据库,设计模式)的一种应用和回顾.比如在登录功能中用到了抽象加反射,在学生下机中,我们可以用触发器来同时更新两个表.这里就先说一下视图的使用,关于视图的有点和作用百度上有很多答案,在此不再赘述. 视图定义: 自己理解:在涉及到多张表的操作的时候就可使用视图.这样可以避免与数据库直接联系.并且当你更新数据库数据时,就会自动更新视图中的数据,方便以后查询. 百度百科:计算机数据库中的视图是一个虚拟表,其内容由查询定义.同真实的表

机房重构---我们“重构”出了什么?

机房重构立即就要结束了,在这"第三个"系统结束的时候,有必要思考一下我们重构的目的了. 或许有人说,还有什么目的呀,不就是编程语言换成了.Net,做出来,调完bug,能执行就得了呗.这么浮夸的日子里,还叫什么劲啊? 对于有这样的想法的人,我必须道一声:您(白)辛苦了 ! 不管做什么事,没有一点总结性思考是无法进步的. 我以下的一些重构论述或者说反思性总结也存在很多不足,希望大家多多指正,在此先致谢! 本文将从五个方面论述一下这次的重构系统,各自是系统架构.UML图指导.设计模式应用.数