为了账号安全,请及时绑定邮箱和手机立即绑定

在mysql中创建函数不成功(确定能创建函数)?

在mysql中创建函数不成功(确定能创建函数)?

30秒到达战场 2019-02-07 11:07:21
在mysql中创建函数不成功(确定能创建函数)CREATE function SplitString( String varchar(2048), SplitChar char)returns res table( Value varchar(128), vindex int)begin declare index int,unit varchar(128),inext int,len int,i int; set index=1; set i=1; set len=len(String); while index<=len begin set inext=charindex(SplitChar,String,index); if inext=0 set inext=len+1; if inext>index begin set unit=ltrim(rtrim(substring(String,index,inext-index))); if unit<>'' begin insert into res (value,vindex) values (unit,i); set i=i+1; end; end; set index=inext+1; end; return;end;源代码来自于http://www.cnblogs.com/lucc/archive/2009/02/14/1390384.html截个图给大侠们看看,,
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。

出错信息大致类似:

ERROR 1418 (HY000): 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)ERROR 1418 (HY000): 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)

MySQL函数不能创建,是未开启功能:

123456789101112131415161718mysql> show variables like '%func%';  +---------------------------------+-------+  | Variable_name                   | Value |  +---------------------------------+-------+  | log_bin_trust_function_creators | OFF   |  +---------------------------------+-------+  1 row in set (0.00 sec)    mysql> set global log_bin_trust_function_creators=1;  Query OK, 0 rows affected (0.00 sec)    mysql> show variables like '%func%';  +---------------------------------+-------+  | Variable_name                   | Value |  +---------------------------------+-------+  | log_bin_trust_function_creators | ON    |  +---------------------------------+-------+  1 row in set (0.00 sec)mysql>


查看完整回答
反对 回复 2019-02-27
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

你那个是   SQL Server   特有的      表值函数。

也就是一个函数,   返回一个结果集合的。

 MySQL  好像是不支持表值函数的样子。   (现在最新的版本支持不支持,  你需要去看看 文档了)

 

你可以尝试修改成  存储过程  返回结果集的处理。

 

 

1234567891011121314151617DELIMITER //CREATE DEFINER=`root`@`%` PROCEDURE testProc()BEGIN  SELECT 'Hello 1' AS A, 'World 1' AS UNION ALL  SELECT 'Hello 2' AS A, 'World 2' AS B;END //DELIMITER ; mysql> call  testProc();+---------+---------+| A       | B       |+---------+---------+| Hello 1 | World 1 || Hello 2 | World 2 |+---------+---------+rows in set (0.00 sec)Query OK, 0 rows affected (0.01 sec)



查看完整回答
反对 回复 2019-02-27
  • 2 回答
  • 0 关注
  • 933 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信