首页 > 数据库 >数据库存储过程

数据库存储过程

时间:2024-08-16 20:49:20浏览次数:13  
标签:语句 存储 name proc 数据库 参数 过程

数据库存储过程

MySQL 存储过程是⼀组 预编译的 SQL 语句 ,可以在 MySQL 数据库中 定义和存储 ,并在 需要时执⾏ 。存储过程可

以接受参数、执⾏条件判断、循环、异常处理等操作,使得开发⼈员可以把⼀系列操作组合成⼀个可重复使⽤的单

元,从⽽提⾼代码的复⽤性和可维护性。

存储过程可以在 MySQL 数据库中创建和保存,然后在需要时调⽤。存储过程通常⽤于执⾏复杂的数据操作,例如

数据转换、数据清理、数据分析等。存储过程的执⾏速度通常⽐单个 SQL 语句的执⾏速度更快,因为存储过程是

预编译的,并且可以在多个客户端之间共享。

MySQL 存储过程的语法类似于其他编程语⾔,包括变量定义、条件语句、循环语句、异常处理等。存储过程可以

接受输⼊参数和输出参数,以及返回值。存储过程还可以使⽤游标来处理结果集,并且可以调⽤其他存储过程或函

数。

存储过程保存在mysql.proc表中

创建存储过程:

CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]])

其中:proc_parameter : [IN|OUT|INOUT] parameter_name type

其中IN表示输⼊参数,OUT表示输出参数,INOUT表示既可以输⼊也可以输出;param_name表示参数名称;type表示

参数的类型

查看存储过程列表:

SHOW PROCEDURE STATUS\G

调⽤存储过程

CALL sp_name ([ proc_parameter [,proc_parameter ...]])

CALL sp_name

说明:当⽆参时,可以省略"()",当有参数时,不可省"()K

存储过程修改

ALTER语句修改存储过程只能修改存储过程的注释等⽆关紧要的东⻄,不能修改存储过程体,所以要修改存储过程,⽅法

就是删除重建

删除存储过程

DROP PROCEDURE [IF EXISTS] sp_name

存储过程优势

存储过程把经常使⽤的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要时从数据库中直接调⽤,省去了编译的过程
提⾼了运⾏速度,同时降低⽹络数据传输量,存储过程相当于独⽴命令可以直接调⽤

1. 提⾼性能

2. 提⾼安全性

3. 提⾼可维护性

4. 提⾼可重⽤性

5. ⽀持事务处理 ACID

存储过程与⾃定义函数的区别

1. 返回值类型不同:⾃定义函数必须返回⼀个值,⽽存储过程可以不返回任何值。

2. 使⽤⽅式不同:⾃定义函数可以在SQL语句中使⽤,如SELECT语句中的函数调⽤,⽽存储过程需要通过CALL语句来调⽤。

3. 事务处理能⼒不同:存储过程可以包含事务处理代码,⽽⾃定义函数不能。

4. 参数传递⽅式不同:⾃定义函数只能通过参数传递来接收输⼊值,并返回计算结果。⽽存储过程可以通过输⼊、输出、输⼊输出三种参数类型来传递参数。

5. 可重⽤性不同:⾃定义函数可以在多个查询中使⽤,⽽存储过程需要单独调⽤

示例

image-20240816200749148

跨数据库执行

image-20240816201920355

计算的存储过程示例

image-20240816204311555

存储过程名为 dorepeat ,它有⼀个参数 n ,并使⽤ REPEAT 循环计算从0到n的总和。最后,存储过程将结果存储

在MySQL⽤户变量 @sum 中。

使⽤ delimiter 命令来指定存储过程的结束符。这是必要的,因为存储过程中包含了多个分号。在存储过程结束

后,使⽤ delimiter 命令将结束符改回分号。

使⽤ CALL 语句调⽤存储过程,并使⽤ SELECT 语句来检索存储在 @sum 中的结果

标签:语句,存储,name,proc,数据库,参数,过程
From: https://www.cnblogs.com/zgw03/p/18363607

相关文章

  • 使用DBeaver(通用数据库管理工具)连接人大金仓数据库
    1、背景描述在信创的大背景下,信息技术人员开始需要频繁接触国产数据库。人大金仓数据库是国内先进的数据库产品,广泛服务于各个重点行业和关键领域,累计装机部署超百万套。2020年,人大金仓实现在国产数据库关键应用领域销售套数占比第一的市场地位。虽然人大金仓提供了官方的数据......
  • 在macOS上运行SQL Server 2022进行数据库开发
    有很多工具可用于在macOS上使用SQL进行开发,包括VSCode的mssql扩展和独立但舒适的AzureDataStudio。作为一名开发人员,您可能听说过AzureSQL数据库模拟器,并且您肯定听说过在容器中部署SQL。最近,在arm64(M1/M2)Mac上本地运行SQL容器的新选项变得可用,它使运行完整的SQLServer映......
  • JAVA毕业设计161—基于Java+Springboot+vue+微信小程序的校园论坛二手闲置系统(源代码
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue+微信小程序的校园论坛二手闲置系统(源代码+数据库+万字论文)161一、系统介绍本项目前后端分离带小程序,分为用户、管理员两种角色,可自行分配角色菜单1、用户:注册、......
  • jenkins推送代码到aws的s3存储桶
    1.aws创建用户2.服务器配置安装awspip3.6installawscliAWSAccessKeyID[None]:公钥AWSSecretAccessKey[None]:私钥Defaultregionname[None]:地域Defaultoutputformat[None]:json3.s3存储桶要提前建好4.piplinepipeline{enviro......
  • python管理MySQL数据库 mysql5.7读写分离 配置mycat(twenty-nine day)
    一、pymysql管理数据库1、搭建主mysql5.7[root@mysql57~]#lsanaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz[root@mysql57~]#tar-xfmysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@mysql57~]#lsanaconda-ks.cfgmysql-5.7.44-linux-glibc2......
  • linq快速动态获取数据库表字段名称、类型、数据
     varbj="Bj";             varpbj=typeof(Xs_xx).GetProperty(bj);//获得班级属性      /*      varcxbj=fromaainsjklj.Xs_xx            lety=(string)pbj.GetValue(aa,null)//linq......
  • MySQL数据库支持存储引擎
    MySQL数据库支持多种存储引擎,以下是几种常见的存储引擎:###1.**InnoDB**-**特性**:InnoDB是MySQL默认的事务型存储引擎,支持ACID事务、行级锁定和外键约束。-**优点**:提供高可靠性、自动恢复、并发性强,适合高并发的应用场景。-**缺点**:相比其他存储引擎,InnoDB在......
  • 向量数据库
    最近,一种鲜为人知的数据类型--向量--作为生成式人工智能的推动力,成为了人们关注的焦点。但是,向量--以及用于存储和分析向量的数据库--已经在后台工作了很多年。它们被用于城市规划、交通物流和环境分析中的地理空间制图和分析。最近,向量还被用于零售产品以及音乐和视频流网站的推......
  • 我与数据库的七年之痒:从初识到没它不行
    腾讯云社区最新发布的《中国数据库前世今生》纪录片,作为7年使用数据库的程序员来说,感受很深。纪录片主要讲述了数据库的发展历程以及不同数据库的使用经验。视频中提到作者在大学时期学习数据库原理时的经历,以及关于使用TDSQL时与MySQL不兼容的问题。此外,视频还涉及了如何选择合适......
  • 图数据库在社交网络分析中的应用
    图数据库在社交网络分析中的应用广泛且深入,其独特的数据结构和高效的查询能力为理解和分析复杂的社交网络关系提供了强有力的支持。以下将详细探讨图数据库在社交网络分析中的多个方面,包括用户关系建模、推荐系统优化、实时社交分析、影响力分析、欺诈检测与安全、知识图谱......