MySQL存储过程详解
点击关注上方“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
END
END
[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参数尽量少用。
——End——
后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读
这是一个能学到技术的公众号,欢迎关注
点击「阅读原文」了解SQL训练营
评论