mysql-自定义函数
0、结构
delimiter $$ -- 修改语句结束符,mysql 默认的结束符是分号,为了在函数体中避免遇到分号就结束,重新定义结束符
create function 函数名(形参) returns 返回值类型
begin
// 函数体
return 返回值数据;
end $$
delimiter ; -- 将语句结束符修改回来
1、变量
局部变量:在函数体中通过declare
进行声明,declare [变量名] [变量类型]
,局部变量可以使用set
赋值或者使用into
关键字。
用户变量:
报错代码:
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)
-- SET GLOBAL log_bin_trust_function_creators = 0;
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('crate table', @tablename, '(id int, name varchar(20));');
return str;
end $$
delimiter;