指组合在一起的一堆SQL语句,用于简化数据处理流程。

可以将某个常用功能对应的一些语句封装成一个存储程序,之后只需要调用这个存储程序就可以完成这个常用功能,从而免去每次都要写好多语句的麻烦。

存储程序包含以下分类:

用户自定义变量

SET @a = 1;
SELECT @a;
SET @a = 2;
SET @b = @a;
SET @a = (SELECT m1 FROM t1 LIMIT 1);
SELECT n1 FROM t1 LIMIT 1 INTO @b;
SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b;

如果定义变量时没有加@符号,则MySQL会把这个变量当成系统变量来对待。

存储函数

创建存储函数

格式如下:

DELIMITER $  # 将MySQL客户端语句分隔符替换为$

CREATE FUNCTION 存储函数名称([参数列表])
RETURNS 返回值类型
BEGIN
    函数体内容
END

DELIMITER ;  # 恢复MySQL客户端语句分隔符为;

比如:

DELIMITER $

CREATE FUNCTION avg_score(s VARCHAR(100))
RETURNS DOUBLE
BEGIN
    RETURN (SELECT AVG(score) FROM student_score WHERE subject = s);
END

DELIMITER ;

调用上面的存储函数的语句如下:

SELECT avg_score('MySQL是怎样运行的');

查看和删除存储函数

查看已定义的存储函数:

SHOW FUNCTION STATUS [LIKE 需要匹配的函数名];

查看某个存储函数的具体定义:

SHOW CREATE FUNCTION 函数名\G

删除存储函数:

DROP FUNCTION 函数名

函数体的定义











  • 无标签