WHILE v_stat LOOP
SELECT PARENT,NO INTO v_parent,v_no FROM KELUARGA WHERE WHO = t_who;
t_no := v_no||n||t_no;
IF v_parent IS NULL THEN
v_stat := FALSE;
END IF;
t_who := v_parent;
n := n + 1;
END LOOP;
sepertinya dibagian ini yang membuat menjadi tidak meloop semua
>>IF v_parent IS NULL THEN
kalau parentnya null itu kan wajar
yang punya parent null juga ada dan lebih dari 1
sehingga misal
A parentnya null no 1
B parentnya null no 2
C parentnya null no 3
nah kalau saya ambil anak cucunya B misal B.1.1.1
dia ( fungsi tadi ) berhenti di B
terus dia gak meloop ke A dan C..
tapi trima kasih...
On 4/20/07, dedy afriyanto <[EMAIL PROTECTED]> wrote:
>
> wah tampaknya gak jalan pas saya pake
> Pak Awaluddin,
> pas saya masukin ke tabel saya
>
> CREATE TABLE KELUARGA
> (
> WHO VARCHAR2(12 BYTE) NOT NULL,
> NO NUMBER DEFAULT 1,
> PARENT VARCHAR2(12 BYTE)
> )
>
> padahal sudah saya ubah di varcharnya
> dan sepertinya
>
> dia tidak meloop semua data bagaimana dia(fungsi itu bisa dapet t_no)
> kalau tidak meloop semua,
> tapi trima kasih. saya coba baca2 lagi fungsi Anda..
>
>
> On 4/19/07, dedy afriyanto <[EMAIL PROTECTED]> wrote:
> >
> > Oke, Thanks.
> > gw gak kepikiran kayak gitu.. ya...
> > awalnya loe mikirnya gimana sih bisa tahu, tapi thanks banget,
> >
> > gw tdnya malah mikir function buat nampilin listnya dulu baru bikin
> > function sortnya
> > eloe malah cuma 1 function pendek.. lagi..
> >
> > yach tinggal gw taruh deh implementasinya...
> >
> > thanks lagi..
> >
> > On 4/18/07, Awaluddin Hamid < [EMAIL PROTECTED] > wrote:
> > >
> > > 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]
> > > >
> > > >
> > >
> > >
> > >
> >
> >
>
[Non-text portions of this message have been removed]