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
为什么会出现这个错误?
最佳答案
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 ;
关于mysql - 错误 1415 : Not allowed to return a result set from a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50457292/