2013-08-29 194 views
0

我想在MySQL中創建一個存儲函數。這個函數必須包含一個group_concat函數。在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',@表' 第6行

任何人有一個想法?

+0

你可能從Oracle來了。在MySQL中沒有立即執行。這可能會有所幫助:http://stackoverflow.com/questions/7567277/is-there-any-corespondent-in-mysql-like-execute-immediate-in-oracle。 – user4035

回答

0

你正在嘗試使用動態SQL,它在MySQL中使用預處理語句完成,使用PREPARE後跟EXECUTE ....但是,在MySQL中,這些僅在存儲過程中支持,而不是存儲的功能。

準備好的語句的SQL語法可以在存儲的pr中使用ocedures,但不是存儲的函數或觸發器。

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