2010-05-23 4 views
4

여러 행의 데이터를 반환하는 MySQL 저장 함수를 작성하고 싶습니다. 이것이 가능한가? 1 행에 잠겨있는 것 같습니다. 심지어 행을 반환 할 수 없습니다. 예MySQL 함수가 1 행 이상을 반환합니다.

비록 MySQL의 저장된 프로 시저에서 null 반환
 
DELIMITER // 

create function go() 

RETURNS int 
deterministic 
NO SQL 

BEGIN 

return null ; -- this doesn't return 0 rows! it returns 1 row 
-- return 0 ; 

END // 

DELIMITER ; 

들어

는 그것의 값에 null 1 개 행을 반환 .. 0 행을 반환하지 않는다.

MySQL 함수에서 0 또는 1 행 이상을 반환 할 수 있습니까? ...

Insert @MyTable 
Values (.....) 

create function go() 
RETURNS @MyTable table 

다음 그러나 해당 테이블을 채우고 그를 반환 :

답변

7

을 (또는 ... 그것을 기입하지 않은) :

23.4.6 : 5.0 스토어드 루틴은 결과 집합을 반환 할 수 있나요?

저장 프로 시저는 수 있지만 저장 함수는 수 없습니다. 저장 프로 시저 내에서 일반 SELECT를 수행하면 결과 집합이 클라이언트에 직접 반환됩니다. 이 기능을 사용하려면 MySQL 4.1 (또는 그 이상) 클라이언트 - 서버 프로토콜을 사용해야합니다. 예를 들어 PHP에서는 이전 mysql 확장자 대신 mysqli 확장자를 사용해야합니다.

+0

와우! 정말 재미 있어요. – bobobobo

+0

그래서 내 쿼리에 실제로 응답합니다. 그 좋은 해결책! – bobobobo

1

당신은 테이블을 반환하는 함수를 만들려고합니다. 무엇을 넣었는지에 따라 0, 1 또는 여러 행을 포함해야합니다. MySQL의 기준에서

+0

흥미로운 접근 방법입니다. 나는 이것이 얼마나 비쌉니까. – bobobobo

+0

또한 테스트되지 않았습니다 - 현재 내 접근 방식을 다시 확인하고 있습니다. 필자는 다른 SQL 형식에서도이 작업을 수행했습니다. 어떤 MySQL 버전을 사용하고 있습니까? – LesterDove

+0

MySQL 5.1을 사용하고 있습니다. – bobobobo

관련 문제