mysql - 函数

筅森魡賤 提交于 2019-12-03 14:05:29

和存储过程的区别:

 

存储过程:返回值任意                             主要用于批量增删改

函数:有且只有一个返回值                      主要用来查某个值

 

1.创建:

方法类型

1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据

不添加可能会报1418错误

function中的变量可以用局部变量或者用户变量定义

 

例子1:无参数,用局部变量

DELIMITER $$
CREATE FUNCTION fun_test_no_param() RETURNS VARCHAR(20)  #起名字时最好能与表内属性分开避免歧义
DETERMINISTIC    #创建方法时需要确认方法类型,否则会出现1418错误
BEGIN
    DECLARE f_id INT DEFAULT 1;
    DECLARE f_username VARCHAR(20);
    SELECT username INTO f_username FROM userinfo WHERE uid = f_id;
    RETURN f_username;
END $$
DELIMITER ;#使用SELECT fun_test_no_param();

 

例子2:有参数,用用户变量

DELIMITER $$
CREATE FUNCTION fun_test_param(f_uid INT) RETURNS VARCHAR(20)  #起参数名字时最好能与表内属性分开避免歧义
DETERMINISTIC    
BEGIN
    SET @f_username = 'aaa';  #这句不要也可以,用户变量可以直接在sql语句中直接创建赋值。
    SELECT username INTO @f_username FROM userinfo WHERE uid = f_uid;
    RETURN @f_username;
END $$
DELIMITER ;
#使用

SELECT fun_test_param(1);

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!