본문 바로가기
  • 노란색 세상은 어디에 있을까?
  • 봄이 오면 여기에 있겠지.
  • 잠시나마 유유자적 하겠네.
오라클/패키지(시스템공통)

[ 로그생성 ] sys_log_api 패키지를 생성합니다.

by 태백성 2024. 4. 12.
create or replace package bsys.sys_log_api
is
    -- 고정변수 정의
    c_package_name                     constant varchar2(0200) default 'sys_log_api';

    -- 전역변수 정의
    g_log_write_yn                              varchar2(0020) default 'Y';             -- Y: 로그저장, N: 로그스킵

    -- 전역변수 정의
    type t_log is record
       (corp_id                        number         default null   -- 법인id
       ,log_name                       varchar2(200)  default null   -- 로그명
       ,param_package                  varchar2(200)  default null   -- 패키지
       ,param_corp_id                  number         default null   -- 법인id
       ,param_lang_cd                  varchar2(50)   default null   -- 언어코드
       ,param_user_cd                  varchar2(50)   default null   -- 사용자코드
       ,param_transaction_type         varchar2(1)    default null   -- 처리유형
       ,param_file_name                varchar2(200)  default null   -- 파일명
       ,param_info                     varchar2(4000) default null   -- 매개변수
       ,result_status_cd               varchar2(0001) default null   -- 처리상태코드('S': 성공, 'F': 실폐)
       ,result_descr                   varchar2(4000) default null   -- 처리결과
    );
    g_log                              t_log;

    -- 함수 정의
    procedure log_p
        (po_result_cd                  in out number                 -- 결과코드(0: 정상, -1: 오류)
        ,po_result_descr               in out varchar2               -- 결과내용
        );

    procedure log_p
        (po_result_cd                  in out number                 -- 결과코드(0: 정상, -1: 오류)
        ,po_result_descr               in out varchar2               -- 결과내용
        --
        ,pi_corp_id                    in     varchar2               -- 법인id
        ,pi_log_name                   in     varchar2               -- 로그명
        ,pi_param_package              in     varchar2               -- 패키지
        ,pi_param_corp_id              in     varchar2               -- 법인id
        ,pi_param_lang_cd              in     varchar2               -- 언어코드
        ,pi_param_user_cd              in     varchar2               -- 사용자코드
        ,pi_param_transaction_type     in     varchar2               -- 처리유형
        ,pi_param_file_name            in     varchar2               -- 파일명
        ,pi_param_info                 in     varchar2               -- 매개변수
        ,pi_result_status_cd           in     varchar2               -- 처리상태코드('S': 성공, 'F': 실폐)
        ,pi_result_descr               in     varchar2               -- 처리결과
        );

end sys_log_api;

 

create or replace package body bsys.sys_log_api
    /* ********************************************************************************************
       * 업 무  단 위 : 시스템관리
       * 패   키   지 : bsys.sys_log_api
       * 사 용  목 적 : 로그생성 및 관리를 위한 패키지
       * 생 성  일 자 : 2024-02-01
       * 생   성   자 : Admin 
       --------------------------------------------------------------------------------------------
       * 수정일자       수정자      수정내역
       --------------------------------------------------------------------------------------------
       * 2024-02-01     Admin       최초 작성
    ******************************************************************************************** */
 is
    /* ********************************************************************************************
       * 사 용  목 적 : 로그 데이터 저장
       * 생 성  일 자 : 2024-02-01
       * 생   성   자 : Admin 
    ******************************************************************************************** */
    procedure log_p
        (po_result_cd                  in out number                 -- 결과코드(0: 정상, -1: 오류)
        ,po_result_descr               in out varchar2               -- 결과내용
        )
    is
    begin
        -- 처리상태가 성공할 경우 공통메시지 저장
        select decode(g_log.result_status_cd, 'S', sys_init_api.c_success_descr, g_log.result_descr)
          into g_log.result_descr
          from dual;

        -- 로그 데이터 저장
        log_p
            (po_result_cd              => po_result_cd            
            ,po_result_descr           => po_result_descr
            --
            ,pi_corp_id                => g_log.corp_id
            ,pi_log_name               => g_log.log_name              
            ,pi_param_package          => g_log.param_package         
            ,pi_param_corp_id          => g_log.param_corp_id         
            ,pi_param_lang_cd          => g_log.param_lang_cd         
            ,pi_param_user_cd          => g_log.param_user_cd         
            ,pi_param_transaction_type => g_log.param_transaction_type
            ,pi_param_file_name        => g_log.param_file_name       
            ,pi_param_info             => g_log.param_info            
            ,pi_result_status_cd       => g_log.result_status_cd
            ,pi_result_descr           => g_log.result_descr
            );
    end log_p;

    /* ********************************************************************************************
       * 사 용  목 적 : 로그 데이터 저장
       * 생 성  일 자 : 2024-02-01
       * 생   성   자 : Admin 
    ******************************************************************************************** */
    procedure log_p
        (po_result_cd                  in out number                 -- 결과코드(0: 정상, -1: 오류)
        ,po_result_descr               in out varchar2               -- 결과내용
        --
        ,pi_corp_id                    in     varchar2               -- 법인id
        ,pi_log_name                   in     varchar2               -- 로그명
        ,pi_param_package              in     varchar2               -- 패키지
        ,pi_param_corp_id              in     varchar2               -- 법인id
        ,pi_param_lang_cd              in     varchar2               -- 언어코드
        ,pi_param_user_cd              in     varchar2               -- 사용자코드
        ,pi_param_transaction_type     in     varchar2               -- 처리유형
        ,pi_param_file_name            in     varchar2               -- 파일명
        ,pi_param_info                 in     varchar2               -- 매개변수
        ,pi_result_status_cd           in     varchar2               -- 처리상태코드('S': 성공, 'F': 실폐)
        ,pi_result_descr               in     varchar2               -- 처리결과
        )
    is
        pragma autonomous_transaction;
    begin
        -- 기본값 할당
        po_result_cd    := 0;
        po_result_descr := sys_init_api.c_success_descr;
        
        if g_log_write_yn = 'Y' then
            begin
                -- 로그 데이터 저장
                insert into sys_log
                    (corp_id
                    ,log_id
                    ,log_name
                    ,param_package 
                    ,param_corp_id 
                    ,param_lang_cd 
                    ,param_user_cd 
                    ,param_transaction_type 
                    ,param_file_name 
                    ,param_info 
                    ,result_status_cd
                    ,result_descr
                    ,create_date
                    ,create_by
                    ,update_date
                    ,update_by
                    )
                values
                    (nvl(pi_corp_id, -1)
                    ,sys_log_s.nextval
                    ,pi_log_name
                    ,pi_param_package         
                    ,pi_param_corp_id         
                    ,pi_param_lang_cd         
                    ,pi_param_user_cd         
                    ,pi_param_transaction_type
                    ,pi_param_file_name       
                    ,pi_param_info            
                    ,pi_result_status_cd
                    ,pi_result_descr
                    ,systimestamp
                    ,pi_param_user_cd
                    ,systimestamp
                    ,pi_param_user_cd
                    );

                -- 배치 로그 저장
                commit;
            
            exception
                when others then
                    po_result_cd    := -1;
                    po_result_descr := '[로그저장] ' || substr(sqlerrm, 11);
                    dbms_output.put_line('po_result_descr → ' || po_result_descr);
            end;
        end if;
        
    end log_p;

end sys_log_api;