我想在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行)附近使用正确的语法
有人有想法吗?
答案 0 :(得分:0)
您正在尝试使用动态SQL,它在MySQL中使用预准备语句完成,PREPARE
后跟EXECUTE
....但是,在MySQL中,这些仅在存储过程中受支持,没有存储的功能。
预准备语句的SQL语法可以在存储过程中使用,但不能在存储的函数或触发器中使用。
- http://dev.mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html