MySQL---储存过程

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/74942272

创建存储过程

CREATE PROCEDURE sp_name ([proc_parameter[,…]])
routine_body

proc_parameter:
- [IN|OUT|INOUT] param_name type

参数
- IN,表示给参数的值必须在调用存储过程时指定
- OUT,表示该参数的额值可以被存储过程改变,并可以返回
- INOUT,表示该参数的调用时指定,并且可以被改变和返回

调用存储过程

  • CALL sp_name([parameter[,…]])
  • CALL sp_name[()]

无参过程的调用可以不写小括号

# 创建无参数的储存过程
mysql> CREATE PROCEDURE sp1() SELECT VERSION();

# 调用无参数的储存过程可以不加括号
mysql> CALL sp1;
mysql> CALL sp1();
+------------+
| VERSION()  |
+------------+
| 5.7.18-log |
+------------+
# 创建IN类型参数
mysql> CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
    -> BEGIN
    -> DELETE FROM user WHERE id = p_id ;
    -> END
    -> //

mysql> CALL removeUserById(9)//

删除储存过程

DROP PROCEDURE [IF EXISTS] sp_name

示例

// 删除指定的记录,并返回剩余记录的数量
mysql> CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)
    -> BEGIN
    -> DELETE FROM user WHERE id = p_id;
    -> SELECT COUNT(id) FROM user INTO userNums;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)
  • ROW_COUNT(); 被增删改更改的行数
# 使用ROW_COUNT() 获得被更改的行数
mysql> DELIMITER //
mysql> CREATE PROCEDURE removeUserByUserName(IN user_name VARCHAR(20),OUT deleteCount INT,OUT restCount INT)
    -> BEGIN
    -> DELETE FROM user WHERE username = user_name;
    -> SELECT ROW_COUNT() INTO deleteCount;
    -> SELECT COUNT(id) FROM user INTO restCount;
    -> END
    -> //

mysql> SELECT @a,@b;
+------+------+
| @a   | @b   |
+------+------+
|    3 |    4 |
+------+------+
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 关系型数据库 MySQL
Mysql数据库 12.SQL语言 储存过程 下 储存过程管理和游标
Mysql数据库 12.SQL语言 储存过程 下 储存过程管理和游标
36 1
|
4月前
|
存储 SQL 关系型数据库
Mysql数据库 11.SQL语言 储存过程 中 流程控制
Mysql数据库 11.SQL语言 储存过程 中 流程控制
42 0
|
4月前
|
存储 SQL 关系型数据库
Mysql数据库 10.SQL语言 储存过程 上 初识储存过程
Mysql数据库 10.SQL语言 储存过程 上 初识储存过程
53 0
|
5月前
|
存储 安全 关系型数据库
MySQL储存引擎那些你不一定知道的东西
MySQL储存引擎那些你不一定知道的东西
28 0
MySQL储存引擎那些你不一定知道的东西
|
6月前
|
存储 关系型数据库 MySQL
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
|
存储 SQL 关系型数据库
如何用Mysql的储存过程,新增100W条数据
存储过程的英文是 Stored Procedure,它的思想很简单,就是 SQL 语句的封装; 一旦存储过程被创建出来,使用它就像使用函数一样简单;
185 0
|
存储 SQL 关系型数据库
MySQL数据库高级篇之储存过程
存储过程是一组为了完成特定功能的 SQL 语句集合。MySQL 5.0终于开始已经支持存储过程,它是数据库中最重要的功能,
141 0
|
存储 数据可视化 关系型数据库
MySQL数据库常识之储存引擎
ENGINE = 引擎类型接在建表语句最后,可以指定引擎。
|
SQL 小程序 Java
java向MySQL数据库储存表情包的那些事儿
相信很多小朋友都遇到过这样一个问题:将表情包插入到mysql数据库中表的一个字段中,总是报错,无法找到解决问题的方法,我之前也没有遇到这个问题,可能是我的开发时间少了,没有碰到过;但是今天,客户在对项目进行测试使用的时候,客户使用微信登录小程序,一直报错,最后项目总监找到我让我帮忙处理,然后我进行了一系列操作......
311 0
java向MySQL数据库储存表情包的那些事儿
|
关系型数据库 MySQL
MySQL之在储存过程中使用表名为变量
  我们知道,在MySQL的储存过程中,一般的输入参数为各种数据类型,如数值型,字符型等。那么,能不能让输入参数等于表名呢?答案是肯定的,那就是使用MySQL提供的PREPARE语法。
1208 0