Trima Kasih Pak Awal,

ya sudah saya modifikasi, sekarang fungsinya sudah berjalan sesuai rencana..

Salam,

On 4/23/07, Awaluddin Hamid <[EMAIL PROTECTED]> wrote:
>
>   Functionnya dimodifikasi aja mas Dedy
>
> SQL> CREATE OR REPLACE FUNCTION order_kel(v_who IN VARCHAR2) RETURN
> VARCHAR2 IS
> 2 v_parent VARCHAR2(12);
> 3 v_no NUMBER(3);
> 4 t_no VARCHAR2(30);
> 5 t_who VARCHAR2(12);
> 6 v_stat BOOLEAN;
> 7 n NUMBER(3);
> 8 l NUMBER(3);
> 9
> 10 BEGIN
> 11 t_no := '';
> 12 t_who := v_who;
> 13 v_stat := TRUE;
> 14 n := 0;
> 15 WHILE v_stat LOOP
> 16 SELECT parent,no INTO v_parent,v_no FROM kel WHERE who = t_who;
> 17 SELECT length(max(no)) INTO l FROM kel WHERE parent = v_parent;
> 18 IF v_parent IS NULL or v_parent = '0' THEN
> 19 SELECT LENGTH(MAX(no)) INTO l FROM kel WHERE parent IS NULL OR
> parent = '0';
> 20 v_stat := FALSE;
> 21 ELSE
> 22 SELECT LENGTH(MAX(no)) INTO l FROM kel WHERE parent = v_parent;
> 23 END IF;
> 24 t_no := LPAD(v_no,l,0)||n||t_no;
> 25 t_who := v_parent;
> 26 n := n + 1;
> 27 END LOOP;
> 28 RETURN t_no;
> 29 END;
> 30 /
> Function created.
>
> Order sebelum data diubah:
> SQL> SELECT who FROM kel ORDER BY order_kel(who);
> WHO
> ------------
> A
> B
> B.1.1.1
> C
>
> SQL> UPDATE kel SET no = 150 WHERE who = 'A';
> 1 row updated.
> SQL> UPDATE kel SET no = 20 WHERE who = 'B';
> 1 row updated.
>
> SQL> SELECT * FROM kel;
> WHO PARENT NO
> ------------ ------------ ---------
> A 150
> B 20
> C 3
> B.1.1.1 B 1
>
> Order setelah data diubah:
> SQL> SELECT who, no FROM kel ORDER BY order_kel(who);
> WHO NO
> ------------ ---------
> C 3
> B 20
> B.1.1.1 1
> A 150
>
> Sekarang sortingnya demikian, karena C berno.3 maka berada paling atas,
> kemudian B (no.20) dan turunannya, terakhir A (no.150).
>
> Awal
>
> dedy afriyanto wrote:
> >
> > On 4/23/07, dedy afriyanto <[EMAIL PROTECTED]<dedyafriyanto%40gmail.com>
> > <mailto:dedyafriyanto%40gmail.com>> wrote:
> > >
> > > Ya ternyata memang dari sisi modifikasinya,
> > > yup saya lupa
> > > t_no varchar2(18) saya besarkan ukuran length-nya
> > >
> > > sekarang sudah jalan cuma ada yang tidak sesuai rencana outputnya
> > > seperti pada kasus Dibawah ini
> > >
> > > WHO PARENT NO
> > > A 0 150
> > > B 0 20
> > >
> > > Saya buat implentasi seperti ini
> > >
> > > SELECT WHO, FUNC_SORT(WHO) AS NO_SORT
> > > FROM TABEL
> > > ORDER BY NO_SORT
> > >
> > > Hasilnya seperti berikut ini
> > >
> > > WHO NO_SORT
> > > A 1500
> > > B 200
> > >
> > > Seharusnya
> > > WHO
> > > B
> > > A
> > >
> > > ya tadi saya salah duga, ternyata pada pengurutan string diluar
> duagaan
> > > Bapak Awal ya??
> > > Trima kasih Pak Awal,
> >
> >
>  
>


[Non-text portions of this message have been removed]

Kirim email ke