2011-08-18 5 views
2

MySQL (5.x)의 WHERE 문에서 저장된 함수의 결과를 사용하려하지만 함수에서 테이블의 값을 INT 변수로 선택하고 있기 때문에 오류가 발생합니다. SELECT가 1 개 이상의 행을 반환하면 분명히 작동하지 않습니다. 내가 테이블을 반환하려고했는데 (내가 이해 한 테이블은 MySQL의 배열을 의미한다)하지만 그 중 하나는 작동하지 않았다. 저장된 함수의 배열 반환

SELECT ID FROM myTable WHERE ID IN my_function(params); 

감사합니다 :

내가 좋아하는 뭔가를 할 수있는 방법이 있습니까. 당신은 저장 프로 시저를 사용해야합니다 -

답변

1

이 할 수없는 ...

첫째, 당신은 여러 개의 결과를 반환하는 저장 기능을 사용할 수 없습니다.

MySQL docs 상태 : 결과 세트는 저장 프로 시저 내에 아니지만 저장 함수 내에서 사용될 수 복귀

문.

두 번째로 쿼리에 저장 프로 시저를 사용할 수 없습니다 (SO question 참조).

검색어 끝에 'HAVING ...'을 사용하셨습니까?

+0

좋아요. 이제'CREATE PROCEDURE my_proc (IN param INT, OUT result table)'과 같은 것도 있는데, TABLE 키워드에서 실패합니다. –

+0

아니요 - 저장 프로 시저를 만드는 구문이 다릅니다. 저는 예를 들어 답을 수정했습니다. – amaidment

+0

예, 저도 그런 식으로 생각했습니다.하지만 문제는 WHERE 문에서 사용할 수 없다는 것입니다. 'SELECT * FROM cities where WHERE id IN (CALL isLessThan (5))' –