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
为什么会出现此错误?
答案 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 ;