机房重构之存储过程

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

相关文章

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket