상세 컨텐츠

본문 제목

토드에서 프로시저(PROCEDURE, PL/SQL) 실행 및 RETURN(OUT) 값 받기

DataBase/Oracle

by 탑~! 2012. 5. 31. 09:58

본문

프로시저 procedure (procedure editor)

 

컴파일 F9

실행테스트 shift + F9

 

또는 schema browser 에서 procs 탭 선택 후

프로시저명에 마우스 우측 클릭 execute procedure

 

 

dbms_output.put_line 보기

메뉴 - view - DBMS Output

 

 

 

plsql (sql editor)

컴파일 F9

실행 F5

 

여러 SQL 이 있을 경우 블럭으로 선택 한 후

컴파일 F9

실행 ctrl + enter

 

 

 

CURSOR를 OUT PARAMETER로 처리할 경우 오라클 TYPE 정의 : http://www.oradev.com/ref_cursor.jsp

PROCEDURE DEBUG : http://www.jjimkorea.pe.kr/21

PROCEDURE OUT : http://www.jjimkorea.pe.kr/73

 

 

오라클 사용자 중 HR 사용자를 이용하여 PROCEDURE 테스트

 

 CREATE OR REPLACE PROCEDURE TOADDEBUGPROCEDURE(PARAM1 IN JOBS.MIN_SALARY%TYPE, PARAM2 IN NUMBER, RESULT OUT NUMBER, P_CURSOR OUT SYS_REFCURSOR
) IS

BEGIN

OPEN P_CURSOR FOR
    SELECT JOB_ID, JOB_TITLE FROM JOBS;

RESULT :=  PARAM1 + PARAM2;

--DBMS_OUTPUT.PUT_LINE(RESULT);


   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       RAISE;
END TOADDEBUGPROCEDURE;
/

 

Oracle 9i 이상부터는 Cursor를 OUT Parameter에 정의 할 때 타입을 만들지 않고 기본 설정에 있는 SYS_REFCURSOR를 사용하여 테스트 할 수 있다. 다른 타입을 만들고 싶다면 위에 링크 클릭.

 

 

실행1

 EXEC TOADDEBUGPROCEDURE(1,2, :RESULT, :CUR)

실행하게 되면 :RESULT, :CUR 값을 설정할 수 있는 창이 뜨는데 :RESULT의 Type은 VARCHAR2, :CUR의 Type은 Cursor 로 설정해야 한다.

실행이 완료되면 Cursor의 Return값은 Data Grid에 표시가 되고 RESULT는 DBMS Output 에 결과가 표시된다.

 

 

실행2

 DECLARE 
  PARAM1 NUMBER;
  PARAM2 NUMBER;
  RESULT NUMBER;
  P_CURSOR SYS_REFCURSOR;

BEGIN 
  PARAM1 := 1;
  PARAM2 := 2;
  RESULT := NULL;

  HR.TOADDEBUGPROCEDURE ( PARAM1, PARAM2, RESULT, :P_CURSOR );

  DBMS_OUTPUT.Put_Line('RESULT = ' || TO_CHAR(RESULT));
 
  DBMS_OUTPUT.Put_Line('');

  COMMIT; 
END;

실행은 위와 비슷하다. 이것은 스크립트 디버거에 있는 Step Over 메뉴를 이요하면 자동으로 만들어 준다.

 

 

 

 

=======================================================================================================================

 

Warning: compiled but with compilation errors 

 

토드에서 Procedures, Functions, PL/SQL 실행시

F5로 실행, Shift+F9로 실행을 했을때는

에러가 나도 아래와 같은 메세지만 던져 준다.

Warning: compiled but with compilation errors

 

이때.

왼쪽 상단의 Execute Statement나 단축키 F9를 누르면

에러의 위치를 보여준다.

PLS-00113: END 'AGETJOIN' 식별자는 'GETJOIN' (1 줄, 10 열에 있는)와 맞아야 합니다

관련글 더보기