错误1415:不允许从函数返回结果集

时间:2018-05-21 22:20:27

标签: mysql sql

CREATE FUNCTION `remover_acentos` (text_1 text)
RETURNS text

select 
replace(text_1,'áâãäéêëíîÏóöôõúûüÁÂÃÄÉÊËÍÎÏÓÖÔÕÚÛÜçÇ','aaaaeeeiiioooouuuAAAAEEEIIIOOOOUUUcC');

上面的函数抛出以下错误。

Error 1415: Not allowed to return a result set from a function

为什么会出现此错误?

1 个答案:

答案 0 :(得分:0)

SELECT在那里做什么?导致错误的原因。使用RETURN返回标量值。

CREATE FUNCTION `remover_acentos` (text_1 text)
RETURNS text

RETURN replace(text_1,'áâãäéêëíîÏóöôõúûüÁÂÃÄÉÊËÍÎÏÓÖÔÕÚÛÜçÇ','aaaaeeeiiioooouuuAAAAEEEIIIOOOOUUUcC');

但我想,这不会做你想做的事。如果要替换其中一个字符的任何一个匹配项,则需要多个replace() - 对于每个字符,请使用一个字符。像

DELIMITER $$
CREATE FUNCTION `remover_acentos` (text_1 text)
RETURNS text
BEGIN
  SET text_1 = replace(text_1,'á','a');
  SET text_1 = replace(text_1,'à','a');
  ...
  RETURN text_1;
END;$$
DELIMITER ;