Mysql错误集

今天使用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; 

最后完成的代码如下:

代码
   
     
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 ;;

 

 

你可能感兴趣的:(mysql)