2014-01-30 4 views
0

상황 : "SELECT x"문을 통해 결과를 "반환"하는 SQL 프로 시저가 있음. 어떤 이유로 함수로 변경하거나 어떤 식 으로든 해당 프로 시저를 변경하는 것은 허용되지 않습니다. 어떻게 같은 결과를 얻을 수 있습니다MySQL : MySQL 프로 시저 호출 결과 얻기

set @result = 0; 
@result = call SomeProcedure(@p1, @p2); 

을하지만 절차이기 때문에 코드가 아닌 위의 기능/작업을 컴파일되지 않습니다. 어떻게 MySQL에서 그걸 얻을 수 있습니까? C++에서는 작동하지만 MySQL에서는 아무런 문제가 없습니다 ...

+1

mysql에서 다음을 수행 할 수 있습니다. 1) 함수를 사용할 수 있습니다. 2) 프로 시저를 사용하고 내부에서 나중에 외부에서 선택할 수있는 전역 변수를 설정합니다. 3) 프로 시저에서 일부 매개 변수가 out 유형인지 점검 할 수 있습니다. 프로 시저가 끝나면 결과가 이미 일부 p1 또는 p2에 있습니다. 옵션 1은 사용할 수 없지만 프로 시저의 구문을 읽고 두 번째 또는 세 번째 옵션을 사용할 수 있는지 확인하십시오. –

답변

0

그것은 불가능합니다.

select ...에서 반환 된 결과 집합은 여러 수준의 하위 호출을 만들더라도 항상 첫 번째 프로 시저의 호출자에게 반환됩니다.

함수는 다른 프로 시저 또는 함수에서 사용할 수있는 값 (결과 집합은 아님)을 반환합니다.

유일한 옵션은 세션 변수를 설정하거나 호출 프로 시저가 알고있는 임시 테이블에 결과를 저장하는 것입니다.

+0

응답 해 주셔서 감사합니다. 나는 프로 시저를 함수로 바꿀 것이다. (언젠가는 int 결과가 필요하다.) 언젠가는 프로 시저를 함수로 바꿀 것이다. – hfrmobile