这方面不是经常会写,一会就忘了,所以用该篇文章来作为学习记录,方便查阅,同时方便巩固学习。
一、函数
(1)概念
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL,所以UDF是对MySQL功能的一个扩展
(2)语法
delimiter
$$
create function 函数名([<参数1><类型1>[,<参数2><类型2>...]])
returns 数据类型
begin
sql语句;
return 值;
end
$$
delimiter;
二、存储过程
(1)概念
是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。
(2)语法
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `p1`$$
CREATE
PROCEDURE `test`.`p1`()
BEGIN
//代码语法
END$$
DELIMITER ;
附上一段mybatis执行存储过程的代码:
<select id="getCheckRestult" parameterType="long" statementType="CALLABLE" resultType="map">
{ CALL pro_basic_check(#{orgId})}
</select>
三、存储过程和函数的其他操作
(1)查看存储过程和函数
查看存储过程状态
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
show procedure status like 'Pro_Employee' \G
查看存储过程和函数的创建语法
SHOW CREATE {PROCEDURE | FUNCTION} sp_name
SHOW CREATE PROCEDURE Pro_Employee \G;
查看存储过程和函数详细信息
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='Pro_Employee' \G;
(2)修改存储过程函数语法
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]
characteristic:
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
(3)删除存储过程函数语法
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
参考文献:
https://www.jb51.net/article/81381.htm
https://blog.csdn.net/qq_41426560/article/details/99975931
学的越多,不知道的越多!