MySQL高级-函数

2018-11-12 20:12:3710/1/2021, 3:34:43 AM

MySQL高级-函数

@(mysql)[procedure]

查看数据库是否支持函数

SHOW VARIABLES LIKE '%FUN%';
  • 若为off,则需要开启
    SET GLOBAL log_bin_trust_function_creators = TRUE;
    

创建函数的语法

CREATE FUNCTION func_name(variable1, variable2 ...)
RETURNS return_type
BEGIN
    ...
END;

DELIMITER //
CREATE FUNCTION func_add(a INT, b INT)
RETURNS INT
BEGIN
    RETURN a + b;
END;
//

enter image description here

函数的管理

  • 函数的管理类似于存储过程

    查看函数

    SELECT * FROM mysql.proc;
    SHOW FUNCTION STATUS WHERE db = 'test';
    
    enter image description here

    删除函数

    DROP FUNCTION IF EXISTS func_add;
    

    实例:

CREATE TABLE user_info (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                        user_name VARCHAR(20) NOT NULL DEFAULT '',
                        user_pwd  VARCHAR(20) NOT NULL DEFAULT ''
                        )ENGINE = INNODB CHARSET = utf8;
                         
CREATE FUNCTION func_login(name VARCHAR(20), pwd VARCHAR(20))
RETURNS VARCHAR(30)
BEGIN
    DECLARE cnt INT DEFAULT 0;
    SELECT count(*) INTO cnt FROM user_info WHERE user_name = name;
    IF cnt = 0 THEN
        RETURN 'user not exists';
    END IF;
    SELECT count(*) INTO cnt FROM user_info WHERE user_name = name AND user_pwd = pwd;
    IF cnt = 0 THEN
        RETURN 'pwd input error';
    ELSE
        RETURN 'user login success';
    END IF;
END;
//

enter image description here