ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
組織の階層構造を出力する( SYS_CONNECT_BY_PATH )
スポンサード リンク

組織の階層構造を出力するには、SYS_CONNECT_BY_PATH関数を使用します。

SELECT
  SYS_CONNECT_BY_PATH( 項目, 区切り文字 )
FROM
 表
STRAT WITH ルート階層
CONNECT BY PRIOR 子レコード項目 = 親レコード項目;
SYS_CONNECT_BY_PATH関数の第一引数で、階層構造を出力する項目名を、第二引数で階層を区切る区切り文字を指定します。

STRAT WITH句では、最上位階層のレコードを指定します。

CONNECT BY PRIOR句では、上位階層レコードとの関連付ける項目を指定します。
 
 
 サンプル表「EMP02」のデータ。

SQL> select * from emp02;

EMP_ID LEADER_ID EMP_NAME
-----  -------  ----------
E01           社長
E02    E01     営業部長
E03    E01     開発部長
E04    E02     営業社員1
E05    E03     開発社員1
E06    E03     開発社員2




例1) 各社員「EMP_ID」の社長からの組織階層をスラッシュ(/)で区切って出力します。

SQL> select
  2  sys_connect_by_path( emp_name,'/' )
  3 from emp02
  4  start with emp_id = 'E01'         ・・・・ 最上位階層(社長)のEMP_ID
  5  connect by prior emp_id = leader_id;  ・・・ 上長との項目(LEADER_ID)を指定

SYS_CONNECT_BY_PATH(EMP_NAME,'/')
---------------------------------------------------------

/社長
/社長/営業部長
/社長/営業部長/営業社員1
/社長/開発部長
/社長/開発部長/開発社員1
/社長/開発部長/開発社員2



スポンサード リンク


シーケンス(順序)の取得(SEQUENCE)
SELECTした行をロックする(SELECT〜FOR UPDATE)
文字列を暗号化してINSERT・UPDATEする/複合化してSELECTする(10g)
項目のバイト数を取得する( VSIZE )
組織の階層構造を出力する( SYS_CONNECT_BY_PATH )
SELECT結果を見やすくする(CHR)
データのダンプを取得する(DUMP)

SQL(DML2) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ