2014-06-23 4 views
2

필자가 이해하는 한, 함수가 아닌 프로 시저에 OUT 또는 IN OUT 매개 변수 만있을 수 있습니다.PL/SQL 함수의 OUT/IN OUT 매개 변수

member FUNCTION ODCIAggregateIterate(self IN OUT DeviationImpl, 
value IN NUMBER) RETURN NUMBER 

이 함수를 것 같다 그러나이 매개 변수를 IN을 OUT 있습니다 사용자 정의 집계 함수를 정의 할 때 그러나, 나는이 서명을 발견했다. 누군가 이것이 왜 가능한지 설명 할 수 있습니까?

감사합니다.

답변

5

해당 제한 사항이 없습니다. 함수는 OUT 또는 IN OUT 매개 변수를 가질 수 있습니다.

그러나 오라클은이를 사용하지 말 것을 권장합니다.

OUT 및 IN OUT 매개 변수는 함수가 일반 SQL에서 사용되거나 DETERMINISTIC 함수로 표시되거나 결과 캐시 된 함수로 사용되는 것을 방지합니다. 따라서 이러한 유형의 매개 변수는 SQL 쿼리에서이 함수를 사용하려는 경우 주로 문제가됩니다.

귀하의 예는 훨씬 더 구체적입니다 : 그것은 전역 함수가 아닌 구성원 함수입니다.

+0

일반적으로 정의는 프로 시저가 0 .. * 값 (이 OUT 매개 변수를 통해)을 반환 할 수 있지만 함수는 RETURN을 통해 단 하나의 값만 반환 할 수 있기 때문에 혼란스러워했지만 게시 한 예제를 보았습니다. . 어쨌든, 당신의 답변 주셔서 감사합니다! – leopik