mysql - 错误 1415 : Not allowed to return a result set from a function

标签 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

为什么会出现这个错误?

最佳答案

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/

相关文章:

php - MySQL 插入 PDO 中尚不存在的记录

MySQL:判断日期是否存在于多个表中

sql - Oracle SQL - 检查约束

mysql - SQL/自连接/下属数量

c# - 如何循环遍历数据表中的每一行并在mySQL中插入数据

mysql - 如何在分组之前排序(mysql、mariadb)

mysql - 现代 Web 应用程序如何对大量快速变化的数据实现缓存和数据持久化?

java - 错误: ORA-02289: sequence does not exist in hibernate

mysql从group by设置多条记录

sql - 在联合选择中返回唯一结果