今天使用Mysql写函数,遇到了不少问题,现在将遇到的问题,和解决方法写下来.
第一:mysql中,每一行都需要加一个分号, - -!
第二:在mysql的函数中, 不能返回结果集.所以不能使用select * from tablename ,select column_name from tablename 等方式.否则要报错not allowed to return aresult set from a function.此时改成 Select xx into 方式即可..
第三:错误提示:"This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary"
应该是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。 如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
我们可以通过设置如下的参数来关掉这个。
SET GLOBAL log_bin_trust_function_creators = 1;
最后完成的代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE DEFINER = CURRENT_USER FUNCTION `func_get_city_name`(`cid` int)
RETURNS varchar(50)
BEGIN
DECLARE result varchar(50);
SET result = '' ;
SELECT region_name INTO result FROM vsvt_region WHERE region_id = cid;
RETURN result;
END;;