2013-02-01 2 views
7

에 저장 프로 시저를 호출, 내가 새로운 저장 프로 시저를 정의하지만, 호출하는 동안 오류가 발생했습니다 두꺼비

CREATE OR REPLACE PROCEDURE SCOTT.getempsal(
     p_emp_id IN NUMBER, 
     p_emp_month IN CHAR, 
     p_emp_sal OUT INTEGER) 

AS 
BEGIN 
    SELECT EMP_SAL 
     INTO p_emp_sal 
     FROM EMPLOYEE_SAL 
    WHERE EMP_ID = p_emp_id 
    AND EMP_MONTH = p_emp_month; 

END getempsal; 

그리고 전화를 시도 :

getempsal(1,'JAN',OUT) --Invalid sql statement. 
+0

두꺼비 함께 호출 할 수 있습니다. 따라서 직접 프로 시저를보고 도구 자체에서 프로 시저를 실행할 수 있습니다. –

답변

14

프로 시저가 아웃 포함 매개 변수이므로 다음과 같이 블록으로 호출해야합니다.

declare 
a number; 
begin 
    getempsal(1,'JAN',a); 
    dbms_output.put_line(a); 
end; 

간단한 절차 (숫자 매개 변수를 사용하여 R) SQL * Plus를 달리 ** GUI 기반 클라이언트 도구 **는

exec proc(1); 

또는

begin 
proc(1); 
end; 
+2

프로 시저가 커서를 반환하면 선언하고 다음을 수행하십시오. : output : = cursor; 그러면 데이터 격자에 커서 내용이 인쇄됩니다. –

+0

한 가지 더 유용한 점은 - exec package_name.procedure_name ('param', 'param2', : 0) 과 같은 출력 커서를 사용하여 모든 저장 프로 시저를 저장할 수 있으며 데이터 항목에 커서 내용을 가져올 수 있습니다. –