LoginSignup
1
1

More than 5 years have passed since last update.

Oracle 定数 プラットフォームによる違いをなるべくこのPACKAGEで吸収しておきたい。

Last updated at Posted at 2018-02-22
CONST
CREATE OR REPLACE PACKAGE CONST
--
-- 定数
--
--   プラットフォームによる違いをなるべくこのPACKAGEで吸収しておきたい。
--
-- history
--   1999/05/01 v1.0
--   2018/08/04 v1.1  ちょと追加
--
IS
-- DIRECTORY SEPARATOR  -- ネーミングがこれで良いかは各自の判断に委ねる
    FUNCTION DIRECTORY_SEPARATOR RETURN VARCHAR2 ;

-- TAB タブ
    FUNCTION TAB RETURN VARCHAR2 ;

--  改行 New Line
    FUNCTION NL RETURN VARCHAR2 ;

--  CR
    FUNCTION CR RETURN VARCHAR2 ;

--  LF
    FUNCTION LF RETURN VARCHAR2 ;

    FUNCTION MKDIR RETURN VARCHAR2 ;  -- mkdir

    FUNCTION TAIL RETURN VARCHAR2 ;  -- mkdir tail

-- OK/NG
    FUNCTION OK RETURN VARCHAR2 ;  -- OK
    FUNCTION NG RETURN VARCHAR2 ;  -- NG

END CONST ;
/
SHOW ERROR PACKAGE CONST

CREATE OR REPLACE PACKAGE BODY CONST
IS
-- DIRECTORY SEPARATOR
    FUNCTION DIRECTORY_SEPARATOR RETURN VARCHAR2 IS
    BEGIN
--      RETURN('/') ;  -- UNIX, Linux
        RETURN('\') ;  -- Windows
    END DIRECTORY_SEPARATOR ;

-- タブ
    FUNCTION TAB RETURN VARCHAR2 IS
    BEGIN
        RETURN(chr(9)) ;
    END TAB ;

--  New Line
    FUNCTION NL RETURN VARCHAR2 IS -- New Line
    BEGIN
--      RETURN(chr(10)) ;              -- UNIX, Linux
        RETURN(chr(13) || chr(10)) ;   -- Windows
    END NL ;

--  CR
    FUNCTION CR RETURN VARCHAR2 IS -- CR
    BEGIN
        RETURN(chr(13)) ;
    END CR ;

--  LF
    FUNCTION LF RETURN VARCHAR2 IS -- LF
    BEGIN
        RETURN(chr(10)) ;
    END LF ;

    FUNCTION MKDIR RETURN VARCHAR2 IS  -- mkdir
    BEGIN
--    RETURN('mkdir -p ') ;  -- UNIX/Linux 既にディレクトリが存在していてもOK
      RETURN('mkdir ') ;     -- Windows 
    END MKDIR ;

    FUNCTION TAIL RETURN VARCHAR2 IS  -- mkdir tail
    BEGIN
--      RETURN(NULL) ;           -- UNIX/Linuxではパラメータなし
        RETURN(' > NUL 2>&1') ;  -- Windows
    END TAIL ;

-- OK/NG
    FUNCTION OK RETURN VARCHAR2 IS -- OK
    BEGIN
        RETURN('OK') ;
    END OK ;

    FUNCTION NG RETURN VARCHAR2 IS -- NG
    BEGIN
        RETURN('NG') ;
    END NG ;

END CONST ;
/
SHOW ERROR PACKAGE BODY CONST
-- ↓PUBLIC SYNONYM に
CREATE OR REPLACE PUBLIC SYNONYM CONST FOR CONST ;
-- ↓実行権をPUBLICにし、インスタンスの全スキーマから実行可能に
GRANT EXECUTE ON CONST TO PUBLIC ;
実行例
COLUMN ANS FORMAT A10
SELECT CONST.DIRECTORY_SEPARATOR
    || CONST.TAB || 'X'
    || CONST.LF  || 'X' AS ANS
FROM DUAL ;

ANS
----------
\       X
X

参考
エスケープシーケンス
ASCIIコード表

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1