2014-11-25 4 views
0

죄송합니다. 이전에 요청했으나 사이트를 통해 검색 할 수 없습니다.pl/sql 저장 함수 ora-01002 순서가 맞지 않음을 가져옴 SIMPLE

오라클 DB에 대해 다음과 같은 저장 함수를 작성하여 변수 이름을 변경하여 읽기 쉽도록했습니다.

create or replace FUNCTION MY_FUNCTION 
(
    INPUT IN NUMBER 
, OUTPUT OUT SYS_REFCURSOR 
) RETURN SYS_REFCURSOR AS 
BEGIN 
    OPEN OUTPUT FOR 
    select * 
    FROM A_USER.A_VIEW myView 
    WHERE myView.ID = INPUT; 
    RETURN OUTPUT; 
END MY_FUNCTION; 

그래서 SQL 개발자 테스트 실행은/당신은 "출력 변수"탭을 얻을 때. 이 탭에는 전통적인 의미의 함수에 의해 반환되는 < "반환 값"과 OUTPUT 출력 변수의 값인 "OUTPUT"두 가지 값이 있습니다. 그들은 동일해야하지만 "OUTPUT"에 대한 값은 제목의 오류이며 < "반환 값"> 정상적으로 작동합니다.

저는 pl/sql을 처음 접했고 실제로 학교에서 그것을 결코 공부하지 않았습니다. 누군가 나에게 여기에 무슨 일이 일어나고 있는지, 그리고 어쩌면 해결책인지에 대한 약간의 통찰력을 줄 수 있습니까? 당신에게 에단

+1

미안하지만 왜 '반환 값'만으로 문제를 해결하면 같은 값을 두 번 반환하는지 이해할 수 없습니까? – Aramillo

+0

@Aramillo 이것은 일반적인 문제입니다. 그들은 모두 작동해야합니다. – user3439941

답변

0
create or replace FUNCTION MY_FUNCTION 
(
    INPUT IN NUMBER 
, OUTPUT IN OUT SYS_REFCURSOR 
) RETURN SYS_REFCURSOR AS 
BEGIN 
    OPEN OUTPUT FOR 
    select * 
    FROM A_USER.A_VIEW myView 
    WHERE myView.ID = INPUT; 
    RETURN OUTPUT; 
END MY_FUNCTION; 

변경 출력 변수 (refcursor)의 선언을 감사드립니다. 그리고 부르는 루틴에서 선언하십시오.