首页 > 技术分享 > MySQL
收藏

Mysql创建函数

07/14 10:56
大潇博客 原创文章,转载请标明出处

创建一个简单的函数,实现输入一个数字n,输出n+1

delimiter $$

create function echo_i(n int) returns int

begin

      declare m int default 1;

      declare i int default 0;

      set i = n + m;

      return i;

end $$

delimiter ;

首先通过delimiter将结束符修改为$$,因为函数体中也会用到分号,为避免冲突,需要另外修改结束符


通过“create function 函数名(参数列表) returns 返回类型”这种格式创建函数


在begin和end中间写函数体,如果函数体中仅有一句话,则可以省略begin end


declare声明变量


函数有且仅有一个返回值


调用方法:select 函数名(参数列表);


若出现错误:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

这是因为开启了bin-log, 此时必须指定函数是否是

1 DETERMINISTIC 确定性的

2 NO SQL 没有SQl语句,当然也不会修改数据

3 READS SQL DATA 只是读取数据,所以不会修改数据

4 MODIFIES SQL DATA 要修改数据

5 CONTAINS SQL 包含了SQL语句

可以通过语句查看log_bin_trust_function_creators状态,如果是off,此时将不能创建函数

show variables like 'log_bin_trust_function_creators';


解决方法:建议临时设置bin-log,重启mysql后将恢复原始值

set global log_bin_trust_function_creators=TRUE;


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311