在MySQL中使用group_concat存储函数

时间:2013-08-29 18:09:16

标签: php mysql sql group-concat stored-functions

我想在MySQL中创建一个存储函数。该函数必须包含group_concat函数。

这是我当前的SQL查询:

DELIMITER $$
CREATE FUNCTION SprachenListe(
paramTable VARCHAR( 50 )
) RETURNS TEXT DETERMINISTIC BEGIN 
DECLARE Ausgabe TEXT;
SET @tableName = paramTable;
EXECUTE IMMEDIATE CONCAT('SELECT GROUP_CONCAT( DISTINCT ', @tableName.Sprache, ' ORDER
BY ',@tableName.Sprache,' SEPARATOR  ','/',' ) INTO ',Ausgabe,' FROM ',@tableName);
RETURN(Ausgabe);
END ;
$$
DELIMITER ;

以下是错误消息:

  

#1064 - 您的SQL语法出错;检查与MariaDB服务器版本对应的手册,以便在'CONCAT('SELECT GROUP_CONCAT(DISTINCT',@ tableName.Sprache,'ORDER BY',@ table'第6行)附近使用正确的语法

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

您正在尝试使用动态SQL,它在MySQL中使用预准备语句完成,PREPARE后跟EXECUTE ....但是,在MySQL中,这些仅在存储过程中受支持,没有存储的功能。

  

预准备语句的SQL语法可以在存储过程中使用,但不能在存储的函数或触发器中使用。

     

- http://dev.mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html