# 06ex1.4. Oracle SQL ________________________________________ ## 1. Oracle固有仕様 ________________________________________ 識別子 ```text - 識別子をすべて大文字にする - ""で囲まれた識別子はそのままにする - 上記2つの仕様により、"小文字"識別子は常に""で囲む必要がある ``` Sqlplus実行 ```text SQLplusの文末 / ストプロの行末 ; ``` ________________________________________ ## 2. Hierarchical Queries ________________________________________ Sample ```query CREATE TABLE "KAISO_TEST" ( "ID" NUMBER(*,0), "CATEGORY" VARCHAR2(3), "CODE" NUMBER(*,0), "OYA_CODE" NUMBER(*,0), PRIMARY KEY ("ID") ); INSERT INTO KAISO_TEST VALUES (1, A, 1, NULL), (2, A, 2, 1), (3, A, 3, 1), (4, A, 4, 3), (5, A, 5, 3), (6, A, 10, NULL), (7, A, 11, 10), (8, B, 1, NULL), (9, B, 2, 1), (10, B, 3, 1), (11, B, 4, 3), (12, B, 5, 3), (13, B, 10, NULL), (14, B, 11, 10); /* 【データの内容】 次のような構造が、category='A', category='B' 両方である(階層はCODE/OYA_CODE) 1 10 /| | 2 3 11 /| 4 5 【メモ】 WHEREは階層処理が終わった後に対して実行される つまり、CONNECT BY に親子のカテゴリが同一であるという接続条件を指定する必要あり */ SELECT id, category, code, oya_code, CONNECT_BY_ROOT code AS root_code FROM kaiso_test WHERE category='A' START WITH oya_code IS NULL CONNECT BY PRIOR code = oya_code AND PRIOR category = category ORDER BY root_code, id ```