2017-12-16 16 views
-3

다음 예는 두 숫자 사이의 최소 값을 찾아 최소값 출력한다 저장 프로 시저를 만듭니다매개 변수는 키워드를 EXECUTE 사용하여 PL/SQL 저장 프로 시저를 실행하는 방법

create or replace procedure findMin(x IN number, y IN number) IS 
BEGIN 
    IF x < y THEN 
     dbms_output.put_line(x||' is the smallest number.'); 
    ELSE 
     dbms_output.put_line(y||' is the smallest number.'); 
    END IF; 
END; 

내부 절차를 실행을 익명 PL/SQL 블록은 아무 문제도 생성하지의 : 그러나

begin 
findMin(5,10); 
end; 

을, 익명 블록의 외부 다음 코드는 작동하지 않습니다

execute findMin(5,10); 

이러한 프로 시저에 매개 변수가 필요한 경우 execute 명령을 사용하여 저장된 PL/SQL 프로 시저를 어떻게 실행할 수 있습니까? 이것은 가능한가?

+0

"작동하지 않음"을 의미합니까? sqlplus에서 이것을 실행하고 있습니까? – OldProgrammer

+0

"작동하지 않습니다"는 기술적 인 문구가 아닙니다. 그게 무슨 뜻이야? – mathguy

+0

적어도 실제로 작동하지 않은 오류 메시지 나 다른 설명을 제공하십시오. 우리는 텔레파시가 아닙니다. – MatBailie

답변

1

"작동하지 않음"으로 무엇을 의미하는지 모르시겠습니까? 여기에 간단한 세션 (SQL * Plus)의 스크린 샷이 있습니다.

두 노트 : execute은 SQL * Plus 명령이므로 세미콜론으로 끝낼 필요가 없습니다 (세미콜론은 아무 것도 없어야하지만 세미콜론은 필요하지 않습니다). 출력을 보려면 먼저 SQL * Plus 명령 set serveroutput on을 실행해야합니다. "작동하지 않는다"는 말은 "나는 출력물을 보지 못했다"는 의미이며, 아마도이 단계를 놓쳤을 것입니다. (기본적으로 서버 출력을 설정하도록 시스템을 설정했기 때문에 그림에 표시되지 않습니다.)

SQL> create or replace procedure findMin(x IN number, y IN number) IS 
    2 BEGIN 
    3  IF x < y THEN 
    4  dbms_output.put_line(x||' is the smallest number.'); 
    5  ELSE 
    6  dbms_output.put_line(y||' is the smallest number.'); 
    7  END IF; 
    8 END; 
    9/

Procedure created. 

Elapsed: 00:00:00.09 
SQL> execute findMin(5, 10) 
5 is the smallest number. 

PL/SQL procedure successfully completed. 

Elapsed: 00:00:00.00 
SQL>