ORACLEで和暦の一覧を取得するSQL

はじめに

和暦の一覧を取得するSQLです。
SelectBox等のリストとして利用できるかと思います。
適当に組み替えてvalueの値等を追加してください。

SQL

with master as (
    -- 疑似的な和暦のマスターです。
    -- このままでも、テーブルでも。
    select 'T' as code, '大正' as name, to_date('19120730','yyyymmdd') as start_date, to_date('19261224','yyyymmdd') as end_date from dual
    union all
    select 'S', '昭和', to_date('19261225','yyyymmdd'), to_date('19890107','yyyymmdd') from dual
    union all
    select 'H', '平成', to_date('19890108','yyyymmdd'), to_date('20190430','yyyymmdd') from dual
),
list as (
    -- 大正の開始からSYSDATE時点までのレコードを取得します。
    select add_months(to_date('19120101','yyyymmdd'), (level - 1) * 12) as temp from dual connect by level <= to_number(to_char(sysdate, 'yyyy')) - 1912 + 1
)
select
    code
    , name
    , rank() over (partition by code order by temp) as japan_year -- 年号毎の年を取得。
    , to_char(temp, 'yyyy') as ad
    , start_date
    , end_date 
from
    list
    inner join master on
        to_char(list.temp, 'yyyy') between to_char(master.start_date,'yyyy') and to_char(master.end_date,'yyyy')
order by ad, start_date
; 

さいごに

参考にしていただいた結果、何らかの不具合等が発生しても責任は負いかねます。
万が一そのままコピペで利用される場合でも、念入りに試験をお願いします。

ORACLEで特定のオブジェクトから関連するオブジェクトを取得するSQL

はじめに

時折業務中に特定のオブジェクト(ViewとかProcedureとか)から参照しているオブジェクトの一覧が欲しい時に利用しているSQLです。
階層問い合わせを利用して取得しています。

SQL

select
    name
    , type
    , referenced_name
    , referenced_type
    , level 
    , sys_connect_by_path(name,' -> ') as path
from
    user_dependencies 
start with
    name = [objectName] -- 調べたいViewとかProcedureとかの名前を入れます。
connect by
    nocycle prior referenced_name = name
order siblings by name; 

これでばーっと出てくるはずです。
必要な項目を適当に足したりしながら利用します。

おわりに

調査に利用するSQLに何か誤りがあると笑えないので、利用する際は他の手段でも一度ご確認ください。
何かあっても責任は負いかねます…。