Disorting pake function aja

SQL> CREATE TABLE kel (
  2  who VARCHAR2(1),
  3  parent VARCHAR2(1),
  4  no NUMBER(3));
Table created.

SQL> INSERT INTO kel VALUES ('A',NULL,1);
1 row created.
SQL> INSERT INTO kel VALUES ('B','A',1);
1 row created.
SQL> INSERT INTO kel VALUES ('C','A',2);
1 row created.
SQL> INSERT INTO kel VALUES ('D','B',1);
1 row created.
SQL> INSERT INTO kel VALUES ('E','B',2);
1 row created.
SQL> INSERT INTO kel VALUES ('F',NULL,2);
1 row created.
SQL> INSERT INTO kel VALUES ('G','F',1);
1 row created.

SQL> CREATE OR REPLACE FUNCTION order_kel(v_who IN VARCHAR2) RETURN 
VARCHAR2 IS
  2   v_parent VARCHAR2(1);
  3   v_no NUMBER(3);
  4   t_no VARCHAR2(10);
  5   t_who VARCHAR2(1);
  6   v_stat BOOLEAN;
  7   n NUMBER(3);
  8 
  9  BEGIN
 10   t_no := '';
 11   t_who := v_who;
 12   v_stat := TRUE;
 13   n := 0;
 14   WHILE v_stat LOOP
 15    SELECT parent,no INTO v_parent,v_no FROM kel WHERE who = t_who; 
 16    t_no := v_no||n||t_no;
 17    IF v_parent IS NULL THEN
 18     v_stat := FALSE;
 19    END IF;
 20    t_who := v_parent;
 21    n := n + 1;
 22   END LOOP;
 23   RETURN t_no;
 24  END;
 25  /
Function created.

SQL> SELECT who FROM kel ORDER BY order_kel(who);
W
-
A
B
C
D
E
F
G
7 rows selected.

hth,
AWAL

dedy afriyanto wrote:
>
> Problem
> ------------
> saya punya tabel
>
> TABEL KELUARGA : WHO , PARENT, NO
>
> sekarang saya mau menampilkannya secara terurut ( berdasarkan no, dan 
> parent
> )
> bagaimana caranya??
>
> jadi semisal
>
> WHO PARENT NO
> A 1
> B A 1
> C A 2
> D B 1
> E B 2
> F 2
> G F 1
>
> Kebetulan saja datanya udah di insertnya secara terurut kalau tidak
> bagaimana??
>
> OUTPUT
> ------------
> A
> B
> C
> D
> E
> F
> G
>
> Trima Kasih
>
> [Non-text portions of this message have been removed]
>
>  

Kirim email ke