[SQL] PROCEDURE, FUNCTION

aljongjong·2021년 12월 19일
0

학원 복습일지

목록 보기
45/84

PROCEDURE

  • PL/SQL 문을 저장하는 객체이다.
    필요할 때마다 복잡한 구문을 다시 입력할 필요 없이 간단하게 호출해서 실행 결과를 얻을 수 있다.
    특정 로직을 처리하기만 하고 결과값을 반환하지 않는다.
      [표현법]
          CREATE PROCEDURE 프로시저명
          (
              매개변수1 [IN/OUT] 데이터타입 [:=DEFAULT 값],
              매개변수2 [IN/OUT] 데이터타입 [:=DEFAULT 값],
              ...
          )
          IS [AS]
              선언부
          BEGIN
              실행부
          EXCEPTION
              예외처리부
          END [프로시저명];
          /
          
      [실행방법]
          EXECUTE(EXEC) 프로시저명[(매개값1, 매개값2, ...)];
          






1) 매개변수가 있는 프로시저
    프로시저 실행 시 매개변수로 인자값을 전달해야 한다.
    






2) IN/OUT 매개변수가 있는 프로시저
    IN 매개변수 : 프로시저 내부에서 사용될 변수
    OUT 매개변수 : 프로시저 호출부(외부)에서 사용될 값을 담아줄 변수
    






FUNCTION

  • 프로시저와 사용 용도가 비슷하지만
    프로시저와 다르게 OUT 변수를 사용하지 않아도 실행 결과를 되돌려 받을 수 있다.(RETURN)
    	[표현법]
            CREATE [OR REPLACE] 함수명
            (
                매개변수1 타입,
                매개변수2 타입,
               ...
            )
            RETURN 데이터타입
            IS
                선언부
            BEGIN
                실행부
              
            RETURN 반환값; -- 프로시저랑 다르게 RETURN 구문이 추가된다.
            EXCEPTION
                예외처리부
            END [함수명];
            /
            








CURSOR

  • SQL 문의 처리결과(처리결과가 여러 행(ROW))를 담고 있는 객체이다.
    커서 사용 시 여러 행으로 나타난 처리 결과에 순차적으로 접근이 가능하다.
      [커서 속성]
          커서명%NOTFOUND : 커서 영역에 남아있는 ROW 수가 없다면 TRUE, 아니면 FALSE
          커서명%FOUND    : 커서 영역에 남아있는 ROW 수가 한 개 이상일 경우 TRUE, 아니면 FALSE
          커서명%ISOPEN   : 커서가 OPEN 상태인 경우 TRUE, 아니면 FALSE
          커서명%ROWCOUNT : SQL 처리 결과로 얻어온 행(ROW)의 수
          
      [사용 방법]
          1) CURSOR 커서명 IS .. : 커서 선언
          2) OPEN 커서명;        : 커서 오픈
          3) FETCH 커서명 INTO 변수, ... : 커서에서 데이터 추출(한 행씩 데이터를 가져온다.)
          4) CLOSE 커서명        : 커서 닫기
          
      [표현법]
          CURSOR 커서명 IS [SELECT 문]
          
          OPEN 커서명;
          FETCH 커서명 INTO 변수;
          ...
          
          CLOSE 커서명;






0개의 댓글