mysql存储过程的创建和使用(MySQL自定义函数与存储过程的创建)
mysql存储过程的创建和使用(MySQL自定义函数与存储过程的创建)出处:https://www.cnblogs.com/huanzi-qch若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.
前言日常开发中,可能会用到数据库的自定义函数/存储过程,本文记录MySQL对自定义函数与存储过程的创建、使用、删除的使用
通用语法事实上,可以认为存储过程就是没有返回值的函数,创建/使用/删除都非常相似,在Navicat可视化工具中,自定义函数/存储过程都归类为函数
-- 定义变量,以及赋默认值0
DECLARE c INT(2) DEFAULT(0);
设置变量
-- 设置变量值
SET c = c 1;
流程控制
-- 流程控制,多条件使用 AND/OR
IF c < 0 OR c = 0 THEN
set c = 0;
ELSEIF c IS NULL THEN
set c = 0;
ELSE
set c = c;
END IF;
循环语句
-- 循环语句
WHILE c <= 10 DO
SET c = c 1;
END WHILE;
自定义函数 创建
-- 创建函数
DROP FUNCTION IF EXISTS test_fun;
CREATE FUNCTION test_fun ( a INT(2) b INT(2) ) RETURNS INT(2) BEGIN
-- 定义变量,以及赋默认值
DECLARE c INT(2) DEFAULT(0);
DECLARE i INT(2) DEFAULT(1);
-- 流程控制
IF a < 0 OR b < 0 THEN
set a = 0;
set b = 0;
ELSEIF a IS NULL AND b IS NULL THEN
set a = 0;
set b = 0;
ELSE
set a = a;
set b = b;
END IF;
-- 设置变量值
SET c = a b;
-- 循环
WHILE i <= 10 DO
SET c = c i;
SET i = i 1;
END WHILE;
-- return返回值
RETURN c;
END;
-- 使用函数
SELECT test_fun ( 1 2 );
-- 删除函数
DROP FUNCTION test_fun;
-- 创建存储过程
DROP PROCEDURE IF EXISTS test_pro;
CREATE PROCEDURE test_pro ( a INT(2) b INT(2) ) BEGIN
-- 定义变量,以及赋默认值
DECLARE c INT(2) DEFAULT(0);
-- 流程控制
IF a < 0 OR b < 0 THEN
set a = 0;
set b = 0;
ELSEIF a IS NULL AND b IS NULL THEN
set a = 0;
set b = 0;
ELSE
set a = a;
set b = b;
END IF;
-- 设置变量值
SET c = a b;
-- 关闭自动提交,mysql每次执行一条语句都默认自动提交,去掉自动提交可大大提高批量操作性能
SET autocommit = 0;
-- 循环
WHILE c <= 10 DO
-- 执行SQL语句,获取1-4随机数
SELECT floor( 1 rand() * 4 );
SET c = c 1;
END WHILE;
-- 开启自动提交
SET autocommit = 1;
-- 模拟返回值,存储过程不能return
SELECT c;
END;
-- 使用存储过程
CALL test_pro ( 1 2 );
-- 删除存储过程
DROP PROCEDURE test_pro;
MySQL对自定义函数与存储过程的创建、使用、删除的使用暂时先记录到这,后续再进行补充
版权声明作者:huanzi-qch
出处:https://www.cnblogs.com/huanzi-qch
若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.