初识MySQL存储过程

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 初识MySQL存储过程

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
MySQL数据库中的存储过程和函数中允许包含DDL(Data Definition Language数据库模式定义语言,是用于描述数据库中要存储的现实世界实体的语言)语句,也允许在存储过程中执行提交(commit,即确认之前的修改)或者回滚(rollback,即放弃之前的修改),但是存储过程和函数中不允许执行LOAD DATA INFILE 语句。此外,存储过程和函数中可以调用其他存储过程或者函数。
存储过程的优点:
(1)增强SQL语言的功能和灵活性。
(2)标准组件式编程。
(3)较快的执行速度。
(4)减少网络流量。
(5)作为一种安全机制来充分利用。
MySQL存储过程的创建语法:
CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型 [,[IN|OUT|INOUT] 参数名 数据类型…]])[特性...]过程体
例如:
DELIMITER //
CREATE PROCEDURE myproc(OUT s int)
BEGIN
SELECT COUNT(*) INTO s FROM students;
END //
DELIMITER ;
MySQL数据库默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,编译过程会报错。
所以要事先用“DELIMITER //”语句修改当前段分隔符为“//”,也就是说,此语句之后的所有语句以“//”作为分隔符,让编译器把第一次出现的“//”和第二次出现的“//”之间的全部内容当做存储过程的代码,不会执行这些代码。
而后面的“DELIMITER ;”意为把分隔符还原为默认的“;”(注意在DELIMITER与;之间要有一个空格)。
存储过程的参数类型:
IN:表示该参数值必须在调用存储过程时指定,在存储过程中这个值是不能被返回的。
OUT:表示该参数的值可以被存储过程改变,并且可以返回。
INOUT:表示该参数在调用时指定,并且可以被改变和返回。
调用存储过程需要用call命令和存储过程名以及一个括号,括号里面根据需要,加入参数,参数包括输入参数、输出参数、输入输出参数。具体的调用方法可以参看下面例子。
例如:
call proc_name() -- 无参数
call proc_name(1,2) -- 有参数,参数全为in(默认值)
DECLARE @t1 INT; -- 有参数,有in,out,inout
DECLARE @t2 INT default 3;
call proc_name(1,2,@t1,@t2)

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 SQL NoSQL
mysql存储过程和存储函数
mysql存储过程和存储函数
|
1月前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
2月前
|
存储 关系型数据库 MySQL
MYSQL存储过程基础入门教程
MYSQL存储过程基础入门教程
14 0
|
2月前
|
存储 关系型数据库 MySQL
Mysql基础第二十六天,使用存储过程
Mysql基础第二十六天,使用存储过程
28 0
Mysql基础第二十六天,使用存储过程
|
2月前
|
存储 SQL 关系型数据库
【MySQL 数据库】9、存储过程
【MySQL 数据库】9、存储过程
205 0
|
2月前
|
存储 关系型数据库 MySQL
mysql存储过程
mysql存储过程
16 3
|
1月前
|
存储 SQL 关系型数据库
mysql存储过程示例
mysql存储过程示例
15 0
|
3月前
|
存储 SQL 关系型数据库
[MySQL]存储过程
[MySQL]存储过程
76 0
[MySQL]存储过程
|
1天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
|
1天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections