机房重构之存储过程

2024-08-26 20:32
文章标签 过程 存储 重构 机房

本文主要是介绍机房重构之存储过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在重构机房中经常遇到这样的问题:很多功能的实现都需要涉及到多张表的操作,比如充值、结账和退卡等功能的实现。因此,就需要我们多次对数据库进行操作,代码量不仅会增加,执行效率也会大大打折扣。于是,存储过程就应运而生,以大大提高执行效率。


1、简介

      存储过程是一组为了完成特定功能的语句集,经过编译后存储在数据库中,用户通过制定存储过程的名称并给出参数来执行它。存储过程在运算时生成执行方式并存储在数据库当中,当其再次运行时速度比单个的SQL语句要快。


 2、优缺点


     1)优点

      a、复用性强。存储过程可以重复使用,从而减少数据库开发的工作量。

      b、提高执行效率。存储过程在创建的时候就进行了编译以后每次执行时都不需要重新编译,执行时比一般SQL语            句更快,提高了效率。

      c、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低            了网络传输的数据量。

      d、更加安全。参数化查询过程可以防止SQL注入攻击。


 2)缺点

      虽然存储过程的使用提高了执行效率,但是,若一个程序系统中大量使用存储过程,如果在后期需求变化时导致数据结构发生变化,就会发生问题,而且后期系统维护也会非常困难,代价也是非常大的。

      所以,在使用存储过程时一定要慎重,权衡利弊,尽力使程序达到最优。


 3、创建

       以重构机房中的充值为例创建一个存储过程,充值业务逻辑为:

      1)查询注册表,判断是否已注册,如无注册信息

      2)插入学生信息

      3)插入学生注册信息

 在SQL Sever中建立存储过程,如图,右击选择新建存储过程。



<span style="font-size:20px;"> -- =============================================  -- Author:      <Akali>  -- Create date: <2015年05月20日>  -- Description: <Register>  -- =============================================  
CREATE PROCEDURE [dbo].[PROC_Register]    --创建存储过程  -- 添加存储过程中的参数  @CardID VARCHAR(15),  @StuID VARCHAR(10),  @StuName varchar(10),  @StuSex varchar(10),  @StuDepart varchar(10),  @StuGrade varchar(10),  @StuClass varchar(10),  @StuText varchar(50),  @StuCash varchar(10),  @StuStatus varchar(10),  @RegTime varchar(10),  @RegDate varchar(10),  @UserID varchar(10),  @RegCash varchar(15),  @CheckStatus varchar(10)  AS  BEGIN  --添加SQL语句  select * from T_RegInfo where CardID =@CardID   if @@ROWCOUNT =0   insert into T_StuInfo (CardID,StuID ,StuName ,StuSex,StuDepart,StuGrade,StuClass,StuText,StuStatus,StuCash ) values (@CardID ,@StuID,@StuName,@StuSex ,@StuDepart ,@StuGrade ,@StuClass,@StuText,@StuStatus,@StuCash )  insert into T_RegInfo (CardID ,StuID ,RegDate ,RegTime ,UserID ,RegCash ,CheckStatus ) values (@CardID ,@StuID ,@RegDate ,@RegTime ,@UserID ,@RegCash ,@CheckStatus )  END </span> 
这样一个存储过程就完成了,当需要使用的时候,我们就可以直接调用 D 层,以便高效快捷的完成。

4.学习小结
在关于本次的学习过程中,总结的还算是比较轻松的,其原因在于,先前自己在数据库方面的总结和对数据库的一直的学习,而现在对于存储过程的总结倒是很不错。对于很多数据库的知识都是很紧密联系的,多去总体的学习这几方面的知识,希望可以得到更多的体会吧!






这篇关于机房重构之存储过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109604

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点