더북(TheBook)

두 번째로 일주일 간 수정된 객체 정보가 있는지 파악하는 ch15_check_objects_prc 프로시저를 만들어 보자.

입력

    CREATE OR REPLACE PROCEDURE ch15_check_objects_prc
    IS
      vn_cnt  NUMBER := 0;
    BEGIN
      -- 일주일 간 변경된 객체 중 ch15_changed_object에 없는 객체만 찾는다
      -- 왜냐하면 이전 프로시저 수행 시 변경된 객체가 있으면 이미 ch15_changed_object에 입력됐기 때문이다
      SELECT COUNT(*)
        INTO  vn_cnt
        FROM USER_OBJECTS a
       WHERE LAST_DDL_TIME BETWEEN SYSDATE - 7
         AND SYSDATE
         AND NOT EXISTS ( SELECT 1
                            FROM ch15_changed_object b
                           WHERE a.object_name = b.object_name);

      -- 변경된 객체가 없으면 RAISE_APPLICATION_ERROR를 발생시켜 에러코드를 넘긴다
      -- 에러코드를 넘기는 이유는 룰에서 처리하기 위함이다
      IF vn_cnt = 0 THEN
        RAISE_APPLICATION_ERROR(-20001, '변경된 객체 없음');
      END IF;

    END;

결과

    PROCEDURE CH15_CHECK_OBJECTS_PRC이(가) 컴파일되었습니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.