Skip to main content

Oracle Procedure/Function Update dan Order (Urutan)

Aduh mak!!. Saya punya aplikasi dimana aplikasi tersebut harus mengurutkan ketika kita memilih ordering data, gimana ya menjelaskannya. Yaitu mengurutkan data dari urutan record data yang sudah ada, sehingga terbentuklah urutan yang baru, sesuai yang diinginkan. Ada yang paham kata-kata ini gak ya? #palu, okelah para permirsa. Contohnya, saya punya table buah, bagi Anda yang belum terlalu paham cara membuat table, bisa disimak tutorial dari w3shools.com ini. Dan kurang lebih untuk table buah saya yang dibuat di Oracle, dapat disimak strukturnya

TABLE BUAH
ID                      VARCHAR(2)
NAMA                    VARCHAR2(20)
PARENT                  VARCHAR(2)
URUTAN                  NUMBER
PRIMARY KEY (ID) 
INDEX CONSTRAINT (PARENT, URUTAN)

dan setelah saya insert beberapa data, kurang lebihnya menjadi seperti ini

IDNAMAPARENTURUTAN
1Pohon Berbuah01
2Mangga11
3Pisang12
4Jambu13
5Sirsat14
6Pohon Merambat02
7Markisa21
8Anggur22

Nah, untuk data parent dan urutan sudah saya constraint sebagai primary key, sehingga mau tidak mau jika saya mengupdate mangga menjadi urutan ke 3, dengan parent 1 yaitu pohon berbuah, maka yang perlu dilakukan adalah pisang dan jambu bergeser ke bawah dan mangga menempati urutan ke 3. Dan datanya menjadi

IDNAMAPARENTURUTAN
1Pohon Berbuah01
3Pisang11
4Jambu12
2Mangga13
5Sirsat14
6Pohon Merambat02
7Markisa21
8Anggur22

Setelah browsing kesana-kemari yang belum membuahkan hasil, akhirnya saya membuat procedure/function oracle sendiri. kurang lebih scriptnya seperti ini

CREATE FUNCTION URUT_BUAH(P_PARENT VARCHAR, P_IDBUAH VARCHAR, P_NAMABUAH VARHCAR2, P_URUTAN NUMBER) RETURN VARCHAR2
IS 
 V_JUMLAH NUMBER; 
 V_URUT NUMBER; 
 V_MAXURUT NUMBER; 
BEGIN
 
 -- untuk mengambil jumlah record, dan urutan semula
 SELECT COUNT(1), URUTAN INTO V_JUMLAH V_URUT FROM BUAH WHERE ID = P_IDBUAH;
 -- untuk mengambil urutan terakhir ditambah satu, jika ingin insert yang baru.
 SELECT NVL(MAX(URUTAN), 0)+1 INTO V_MAXURUT FROM BUAH WHERE PARENT = P_PARENT;

-- jika idbuah ada, dan ingin diurutkan sesuai urutan maka
IF V_JUMLAH = 1 THEN
 -- jika urutan lebih besar dari urutan semula 
 IF P_URUTAN > V_URUT THEN
    UPDATE BUAH SET URUTAN = 0 WHERE ID = P_IDBUAH;
    FOR I IN V_URUT .. P_URUTAN-1 LOOP
     UPDATE BUAH SET URUTAN = I WHERE URUTAN = (I+1) AND PARENT = P_PARENT;
    END LOOP;
    UPDATE BUAH SET URUTAN = P_URUTAN WHERE ID = P_IDBUAH;
 
 -- jika urutan lebih kecil dari urutan semula
 ELSIF P_URUTAN < V_URUT THEN
    UPDATE BUAH SET URUTAN = 0 WHERE ID = P_IDBUAH;
    FOR I IN REVERSE P_URUTAN+1 .. V_URUT LOOP
      UPDATE BUAH SET URUTAN = I WHERE URUTAN = (I-1) AND PARENT = P_PARENT;
    END LOOP;
    UPDATE BUAH SET URUTAN = P_URUTAN WHERE ID = P_IDBUAH;
 END IF;
 RETURN 'DATA TELAH DIURUTKAN';

-- jika idbuah belum pernah ada, maka tambahkan record
ELSIF V_JUMLAH = 0 THEN
 INSERT INTO BUAH (ID, NAMA, PARENT, URUTAN) VALUES (P_IDBUAH, P_NAMABUAH, P_PARENT, V_MAXURUT); 
 RETURN 'DATA TELAH TERINSERT'; 

ELSE
 RETURN 'ADA KESALAHAN BRO!'; 
END IF;
END URUT_BUAH;


Kalau kurang jelas dapat ditanyakan ya!.
nah, bagaimana jika saya ingin mengubah parent juga Pak? kita simak dan tunggu tutorial selanjutnya

Comments

Popular posts from this blog

Istilah Makanan, Minuman, dll dalam MOS / OSPEK

Bagi Adik-adik yang baru masuk ke sekolah atau universitas baru. Mungkin mendapatkan tugas yang sulit dari kakak pembina pada saat MOS / OSPEK.

Nah, sebagai permulaan, dijelasin dulu ya, apa itu MOS dan OSPEK. Baru nanti kita melanjutkan ke Istilah yang ditunggu.

Masa Orientasi Siswa atau disingkat MOS atau sering disebut juga Masa Pengenalan Lingkungan Sekolah (disingkat MPLS) merupakan sebuah kegiatan yang umum dilaksanakan di sekolah guna menyambut kedatangan siswa baru.
Masa orientasi lazim kita jumpai hampir di tiap sekolah, mulai dari tingkat SMP, SMA hingga perguruan tinggi. Tak pandang itu sekolah negeri maupun swasta, semua menggunakan cara itu untuk mengenalkan almamater pada siswa barunya.
MOS dijadikan sebagai ajang untuk melatih ketahanan mental, disiplin dan mempererat tali persaudaraan. MOS juga sering dipakai sebagai sarana perkenalan siswa terhadap lingkungan baru di sekolah tersebut. Baik itu perkenalan dengan sesama siswa baru, kakak kelas, guru hingga karyawan lainn…

Pusar Udel Berair atau Sakit dan Berbau

Sudah lama nih saya mencari artikel tentang sakit pusar atau pusar berbau. Dulu saat awal pertama pusar sakit, rasanya tidak karuan, setelah periksa ke dokter katanya ada infeksi, akhirnya diberilah saya antibiotik, obat penghilang rasa sakit, dan satu obat alergi obat. Namun setelah rasa sakit itu hilang, sekarang kok masih tersisa bau yang dahsyat dari perut saya, kata istri saya seperti bau terasi. Baiklah, tanpa panjang lebar, silakan disimak artikel dari http://christinarwen.blogspot.com.  Pusar atau udel jarang sekali mendapat perhatian untuk dibersihkan, padahal menjaga kebersihan area pusar sama pentingnya dengan mencuci tangan atau kaki. Beberapa kondisi bahkan membuat pusar berbau busuk dan tidak sedap. Apa saja?
Pusar atau secara medis disebut umbilikus pada dasarnya merupakan bekas luka setelah kelahiran. Kebanyakan orang tidak menaruh perhatian khusus pada pusar. Tetapi ada keadaan tertentu yang mengharuskan Anda memperhatikan pusar secara penuh. Salah …

Pertanyaan Calon Mertua Sebelum Lamaran

Terima kasih kepada agan AaGuru yant telah membagi artikelnya di kaskus. Silakan disimak

Biasanya setelah anda sudah cukup lama berkenalan atau pacaran dengan doi anda, dan camer anda sudah merasa bahwa hubungan anda harus dipikirkan mau kemana nantinya, anda akan di interview sama camer anda pada suatu waktu untuk mengetahui seberapa serius anda dengan anaknya.

Sikap dan gerak tubuh yang diperlukan :

1. Sikap dan gerak tubuh anda sama halnya anda melamar kerjaan, jadi harus penuh keyakinan dan optimis
2. Saat pertama kali datang dan bertemu, sebaiknya anda memberikan salam dan cium tangan mereka, karena kita adalah orang timur yg senantiasa menjunjung budaya dan keramah tamahan serta menghormati karena kelak mereka akan menjadi orangtua kita juga
3. Posisi duduk harus tegak, ini menandakan agan penuh keyakinan
4. Jangan sering gerak2in anggota bdan, krn ini menandakan kalo agan gugup
5. Menjadilah pendengar yg baik, ketika camer berbicara tataplah dengan sebaik2nya
6. Jangan pernah …