点击关注上方“SQL数据库开发”,
设为“置顶或星标”,第一时间送达干货

示例:
CREATE PROCEDURE sp_customers(IN cusid INT)BEGIN SELECT * FROM customers WHERE `客户ID`=cusid;END;
复制
CALL sp_name([参数])
CALL sp_customers(1);
复制
解释:

过程体即我们在调用时必须执行的SQL语句,上面的SELECT查询即为一个简单的过程体。
过程体包含DML、DDL语句,if-then-else和while-do语句、声明变量的declare语句等
过程体的格式上面也已经演示过,以BEGIN开始,以END结尾(可以嵌套)。
BEGIN BEGIN BEGIN -- SQL代码; END ENDEND
复制
[label_name:] BEGIN [statement_list] END [label_name]
label1: BEGIN label2: BEGIN label3: BEGIN --SQL代码; END label3 ; END label2;END label1
复制
IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
CREATE PROCEDURE sp_customers_out(OUT cusname VARCHAR(20))BEGIN SELECT cusname; SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=1; SELECT cusname;END
复制
CALL sp_customers_out(@cusname);
复制


CREATE PROCEDURE sp_customers_inout(INOUT cusname VARCHAR(20))BEGIN SELECT cusname; SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=2; SELECT cusname;END
复制
SET @cusname='张三';CALL sp_customers_inout(@cusname);
复制


需要输入值时使用IN参数;
需要返回值时使用OUT参数;
INOUT参数尽量少用。
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。 有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行 数据前线 后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读
复制
文章转载自SQL数据库开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1488次阅读
2025-03-13 11:40:53
MySQL8.0统计信息总结
闫建(Rock Yan)
551次阅读
2025-03-17 16:04:03
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
506次阅读
2025-03-13 14:38:19
SQL优化 - explain查看SQL执行计划(一)
金同学
442次阅读
2025-03-13 16:04:22
MySQL突然崩溃?教你用gdb解剖core文件,快速锁定“元凶”!
szrsu
431次阅读
2025-03-13 00:29:43
MySQL生产实战优化(利用Index skip scan优化性能提升257倍)
chengang
373次阅读
2025-03-17 10:36:40
MySQL数据库当前和历史事务分析
听见风的声音
347次阅读
2025-04-01 08:47:17
墨天轮个人数说知识点合集
JiekeXu
328次阅读
2025-04-01 15:56:03
MySQL 生产实践-Update 二级索引导致的性能问题排查
chengang
317次阅读
2025-03-28 16:28:31
MySQL8.0直方图功能简介
Rock Yan
260次阅读
2025-03-21 15:30:53