2010-11-26 1 views
1

Windows Server 2008에서 MySQL Server 7.0을 사용 중이며 함수에서 GROUP_CONCAT의 결과를 반환하려고합니다. 일반적으로 다음과 같이 SQL은 다음과 같습니다MySQL 함수에서 GROUP_CONCAT를 반환하십시오.

DELIMITER ; 

DROP FUNCTION IF EXISTS MyFunction; 
DELIMITER $$ 

CREATE FUNCTION MyFunction(MyVar INT) 
    RETURNS VARCHAR(255) 
BEGIN 
    SELECT @MyRetVar = GROUP_CONCAT(MyColumn) 
    FROM MyTable 
WHERE MyID = MyVar; 
    RETURN @MyRetVar; 
END$$ 

DELIMITER ; 

이것은 다음과 같은 결과를 얻을 : 결과는 내가 확인

함수에서 설정 한 허용되지 않음 반환 에 :

ERROR 1415 (0A000) 설명서 (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html) 및 읽기

결과 유형은 TEXT입니다. 또는 group_concat_max_len이보다 작거나 이 512가 아니면 유형의 결과는 VARCHAR 또는 VARBINARY입니다.

group_concat_max_len의 기본값을 My.ini의 기본값 인 512에서 256으로 변경하고 MySQL 서비스를 다시 시작했습니다. 변경을 확인했습니다.

mysql> "% concat %"와 같은 변수를 보여줍니다.

도움을 주시면 감사하겠습니다.

답변

0

SELECT GROUP_CONCAT(MyColumn) 
FROM MyTable 
WHERE MyID = MyVar INTO @MyRetVar; 
RETURN @MyRetVar; 
+0

감사를 시도 ajreal! 이게 내가 원하는거야. 나는 왜 내 접근 방식이 효과가 없었는지 조금 궁금하다. – bitxwise

+0

@bitxwise INTO가없는 SELECT가 변수에 값을 할당 할 수 없기 때문에 접근 방식이 작동하지 않았다. – fredt