MY FUNCTION 01.sql

CREATE OR REPLACE FUNCTION MY_FUNCTION_01 (
   p_VERSION        IN VARCHAR2
  ,p_OWNER_CODE     IN VARCHAR2
  ,p_OPERATOR_CODE  IN VARCHAR2
  ,p_TERMINAL_CODE  IN VARCHAR2
  ,p_PROGRAM_ID     IN VARCHAR2
  ,p_MESSAGE_ID     IN VARCHAR2
  ,p_MESSAGE_TEXT   IN VARCHAR2)
RETURN NUMBER IS

--//////////////////////////////////////////////////////////////////////////////
--
--  FUNCTION_NAME   : MY_FUNCTION_01     メッセージログ出力
--  AURGMENTS       : p_PROGRAM_ID        I   プログラムID
--                  : p_MESSAGE_ID        I   イベント名称
--                  : p_MESSAGE_TEXT      I   処理メッセージ
--
--  RETURN          : SQLCODE
--  CREATE DATE     : 2018.04.13
--  NOTE            : ログテーブルにログを出力します。
--                    TIME_STAMPがVARCHAR2なのは、ローカルの言語設定の影響を避けるため。
--
--//////////////////////////////////////////////////////////////////////////////

    --=================================
    --         変数定義
    --=================================
    w_VERSION       MY_SYSTEM_LOG.VERSION%TYPE;
    w_OWNER_CODE    MY_SYSTEM_LOG.OWNER_CODE%TYPE;
    w_OPERATOR_CODE MY_SYSTEM_LOG.OPERATOR_CODE%TYPE;
    w_TERMINAL_CODE MY_SYSTEM_LOG.TERMINAL_CODE%TYPE;
    w_PROGRAM_ID    MY_SYSTEM_LOG.PROGRAM_ID%TYPE;
    w_MESSAGE_ID    MY_SYSTEM_LOG.MESSAGE_ID%TYPE;
    w_MESSAGE_TEXT  MY_SYSTEM_LOG.MESSAGE_TEXT%TYPE;

BEGIN

    w_VERSION       := SUBSTRB(p_VERSION       ,1,10 );
    w_OWNER_CODE    := SUBSTRB(p_OWNER_CODE    ,1,2  );
    w_OPERATOR_CODE := SUBSTRB(p_OPERATOR_CODE ,1,10 );
    w_TERMINAL_CODE := SUBSTRB(p_TERMINAL_CODE ,1,4  );
    w_PROGRAM_ID    := SUBSTRB(p_PROGRAM_ID    ,1,30 );
    w_MESSAGE_ID    := SUBSTRB(p_MESSAGE_ID    ,1,4  );
    w_MESSAGE_TEXT  := SUBSTRB(p_MESSAGE_TEXT  ,1,999);

    ----------------------------
    --       ログ出力
    ----------------------------
    INSERT INTO MY_SYSTEM_LOG
        (
          RECNO
         ,TIME_STAMP
         ,VERSION
         ,OWNER_CODE
         ,OPERATOR_CODE
         ,TERMINAL_CODE
         ,PROGRAM_ID
         ,MESSAGE_ID
         ,MESSAGE_TEXT
        )
    VALUES
        (
          MY_SYSTEM_LOGSEQ.NEXTVAL                           -- RECNO
         ,TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3')  -- TIME_STAMP
         ,NVL(w_VERSION,' ')                                 -- VERSION
         ,NVL(w_OWNER_CODE  ,' ')                            -- OWNER_CODE
         ,NVL(w_OPERATOR_CODE  ,' ')                         -- OPERATOR_CODE
         ,NVL(w_TERMINAL_CODE ,' ')                          -- TERMINAL_CODE
         ,NVL(w_PROGRAM_ID  ,' ')                            -- PROGRAM_ID
         ,NVL(w_MESSAGE_ID  ,' ')                            -- MESSAGE_ID
         ,NVL(w_MESSAGE_TEXT,' ')                            -- MESSAGE_TEXT
        );

    COMMIT;

    RETURN  SQLCODE;

EXCEPTION
    WHEN OTHERS THEN
    --DBMS_OUTPUT.PUT_LINE('エラーコード:'||SQLCODE);
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
    RETURN SQLCODE;
END;