2012-08-27 2 views
2

나는 패키지 내에서 Oracle 저장 프로 시저를 호출하기 위해 노력하고있어 나는이 오류 받고 있어요 : SQL 오류 : ORA-06576 : 내가 SQL Developer를 사용하고 유효한 함수 또는 프로 시저 이름패키지 내에서 Oracle 프로 시저를 호출하는 방법은 무엇입니까?

를이 내가 여기

call WEATHERDATAUPDATES.GetLastRunDate("WeatherData") 

을 사용하고 명령 것은 패키지/절차

PACKAGE BODY WEATHERDATAUPDATES AS 

    PROCEDURE GetLastRunDate(PROCESS IN VARCHAR2, RUNDATE OUT DATE) AS 
    BEGIN 
    SELECT rundate FROM Marcie.last_rundate 
    where process = PROCESS; 
    END GetLastRunDate; 

END WEATHERDATAUPDATES; 

내가 오라클 패키지에 아주 새로운 그리고 난 누락 확실하지에게 있습니다. 검색을 시도했지만 작동하는 답변을 찾을 수 없습니다. 누군가 내가 놓친 걸 말해 줄 수 있니?

덕분에, 마시

답변

3

GetLastRunDate 2 개 매개 변수 (프로세스 및 rundate)을 가지고 있지만, 당신은 단지 당신의 전화에 한을 전달하고 있습니다.

당신은 당신이 어디서든 검색 값 퍼팅되지 않은 하나 옵션은 기능과 rundate를 반환하게하는 것입니다 밖으로 ... 당신의 절차에

PACKAGE BODY WEATHERDATAUPDATES AS 

    FUNCTION GetLastRunDate(PROCESS IN VARCHAR2) 
    RETURN DATE 
    AS 
    lDate DATE; 
    BEGIN 
    SELECT rundate 
    INTO lDate 
    FROM Marcie.last_rundate 
    where process = PROCESS; 

    RETURN lDate; 
    END GetLastRunDate; 

END WEATHERDATAUPDATES; 
+0

권한 문제 일 수도 있습니다. 귀하의 의견을 보내 주셔서 감사합니다. – Marcie

3

을 두 번째 매개 변수를 전달하고자하고 있기 때문에, INTO를 사용한다 : 전화에서

...  
    PROCEDURE GetLastRunDate(PROCESS IN VARCHAR2, RUNDATE OUT DATE) AS 
    BEGIN 
    SELECT rundate 
    INTO RUNDATE 
    FROM Marcie.last_rundate 
    where process = PROCESS; 
    END GetLastRunDate; 
... 

가 out 매개 변수 RUNDATE OUT DATE에 대한 변수를 전달합니다.

은 PL/SQL 블록에서 호출을 넣어 :

DECLARE 
    lastRunDate DATE; 
BEGIN 
    WEATHERDATAUPDATES.GetLastRunDate("WeatherData",lastRunDate); 
    -- do something with lastRunDate 
END; 
+0

나는 그것이 권위 문제일지도 모른다라고 생각한다. 귀하의 의견을 보내 주셔서 감사합니다. – Marcie

2

당신은 사양을 패키지의 BODY를 표시하지만,하지 않은 - GetLastRunDate 패키지 사양에 선언되어 있는지 확인합니다.

+0

네가 맞다. 신체에서 선언 된 것이라면 외부에서 절차를 호출하는 것이 전혀 불가능할 수도있다. 패키지 내부에서만 사용할 수 있습니다. – user75ponic

관련 문제