杭州银行×TiDB:打造首个云原生分布式国产银行核心业务系统
617
2023-07-04
Mysql怎么创建函数
Mysql如何创建函数
DELIMITER $$DROP FUNCTION IF EXISTS genPerson$$CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50)BEGIN DECLARE str VARCHAR(50) DEFAULT ''; SET @tableName=name; SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));'); return str;END $$DELIMITER ;登录后复制
就以上图的sql来说
(1)DELIMITER $$ 定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。
(2)DROP FUNCTION IF EXISTS genPerson$$ 如果函数genPerson已经存在了,就删除掉。
(3)CREATE FUNCTION 创建函数genPerson,函数的参数是name,返回值是varchar(50)。
(4)函数体放在BEGIN 与 END之间。
(6)CONCAT连接多个字符串。
(7)RETURN 返回拼接后的字符串str。
从执行结果可以看出
Mysql无法创建函数 错误码 1418
在mysql中创建函数,报
错误码: 1418
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) 这个是创建函数功能未开。
解决方式
1.查看是否打开创建函数功能
show variables like '%func%';-------------------------------------------+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | OFF |+---------------------------------+-------登录后复制
2.开启
SET GLOBAL log_bin_trust_function_creators = 1;登录后复制
3.再次查看
show variables like '%func%';-------------------------------------------+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | ON |+---------------------------------+-------登录后复制
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。