YYYYMMDD形式の日付文字列を渡すと、対象日の消費税率を返すFunctionです。
サンプルFunction
例)年月日から消費税率を返すFunction
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
FUNCTION F_GETTAX( ymd IN VARCHAR2 )RETURN NUMBER IS dt DATE; BEGIN --引数がnullの場合はnullを返す IF ymd IS NULL THEN RETURN NULL; END IF; --引数をDATE型に変換してみる dt := TO_DATE(ymd, 'YYYYMMDD'); --引数を範囲で分岐して消費税率を求める IF ymd >= '19890401' AND ymd <= '19980331' THEN RETURN 3; ELSIF ymd >= '19980401' AND ymd <= '20140331' THEN RETURN 5; ELSIF ymd >= '20140401' AND ymd <= '20190930' THEN RETURN 8; ELSIF ymd >= '20191001' THEN RETURN 10; ELSE RETURN 0; END IF; EXCEPTION WHEN OTHERS THEN --例外発生時はnullを返す RETURN NULL; END F_GETTAX; |
使用例
例)2017/04/01の消費税率を取得する
- SQL*Plus
- SQL> SELECT F_GETTAX('20170401') FROM dual; F_GETTAX('20170401') ------------------------- 8
メモ
- 存在しない日付文字列を指定した場合はnullが返ります。
- 2019/10/01以降は10%と返ります。(軽減税率は考慮していません。)