Mysql存储过程与函数篇,创建及调用存储函数

2026-04-17 10:47:37

1、创建存储函数的语法结构

CREATE FUNCTION func_name([proc_parameter])

RETURN type

[characteristics..] routine body

Mysql存储过程与函数篇,创建及调用存储函数

2、REATE FUNCTION:创建关键字

func_name 存储函数名称

proc_parameter:参数列表 格式如下

【param_name type 】

param_name: 参数名称

type:参数类型

Return type:表示返回数据的类型

characteristic:存储函数特性,与存储过程类似,大家可以查看我的上一篇文章《 Mysql存储过程与函数篇,创建存储过程》

Mysql存储过程与函数篇,创建及调用存储函数

1、1.创建示例用表,插入测试数据

CREATE TABLE `test_10` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(50) DEFAULT NULL,

  `age` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

INSERT INTO `test_10` VALUES ('1', 'rat', '2');

INSERT INTO `test_10` VALUES ('2', 'ox', '4');

INSERT INTO `test_10` VALUES ('3', 'tiger', '6');

INSERT INTO `test_10` VALUES ('4', 'rabbit', '8');

INSERT INTO `test_10` VALUES ('5', 'dragon', '10');

INSERT INTO `test_10` VALUES ('6', 'snake', '12');

INSERT INTO `test_10` VALUES ('7', 'horse', '14');

INSERT INTO `test_10` VALUES ('8', 'sheep', '16');

INSERT INTO `test_10` VALUES ('9', 'monkey', '18');

INSERT INTO `test_10` VALUES ('10', 'chicken', '20');

INSERT INTO `test_10` VALUES ('11', 'dog', '22');

INSERT INTO `test_10` VALUES ('12', 'pig', '24');

INSERT INTO `test_10` VALUES ('13', 'cat', '26');

Mysql存储过程与函数篇,创建及调用存储函数

2、2.创建存储函数

CREATE FUNCTION get_animal_name (search_id INT(11)) #创建函数

RETURNS VARCHAR (50) #定义返回值类型

BEGIN

RETURN ( #返回查询ID对应的名称

    SELECT

        `name`

    FROM

        test_10

    WHERE

        id = search_id

);

END

Mysql存储过程与函数篇,创建及调用存储函数

3、3.调用存储函数

SELECT get_animal_name(1);

SELECT get_animal_name(10);

Mysql存储过程与函数篇,创建及调用存储函数

Mysql存储过程与函数篇,创建及调用存储函数

1、1.存储函数中参数的使用及流程控制  

CREATE FUNCTION test_liucheng (the_type INT(11)) #创建函数

 RETURNS INT(11) #定义返回值

 BEGIN

     DECLARE re_age INT(11);#定义变量

     IF the_type = 1 THEN #如果类型为1求和

         SET re_age = (SELECT SUM(age) FROM test_10);

     ELSE #如果类型为2,求平均值(测试用就只求整数了)

         SET re_age = (SELECT AVG(age) FROM test_10);

     END IF;

     RETURN (re_age);#返回参数

END

Mysql存储过程与函数篇,创建及调用存储函数

2、2.调用存储函数

SELECT test_liucheng(1) as 'age总和';

SELECT test_liucheng(2) as 'age均值';

Mysql存储过程与函数篇,创建及调用存储函数

Mysql存储过程与函数篇,创建及调用存储函数

1、1.存储函数有且只有一个返回值,而存储过程不能有返回值。

2. 函数只能有输入参数,而且不能带in, 而存储过程可以有多个in,out,inout参数。

3.存储过程中的语句功能更强大,存储过程可以实现很复杂的业务逻辑,而函数有很多限制,如不能在函数中使用insert,update,delete,create等语句;存储函数只完成查询的工作,可接受输入参数并返回一个结果,也就是函数实现的功能针对性比较强。

4.存储过程可以调用存储函数。但函数不能调用存储过程。

5.存储过程一般是作为一个独立的部分来执行(call调用)。而函数可以作为查询语句的一个部分来调用.

猜你喜欢