Pak Andi,
disini saya hanya bisa dengan pseudocode saja karena detailnya tidak saya
ketahui
yaitu: tabel terkait (relationshipnya), struktur dan isi datanya.
yang saya tangkap:
- Tidak semua data di Tabel TRANSAKSI ada di Tabel UPDATE
- Jika ada di Tabel UPDATE ubahlah di tabel TRANSAKSI (dan 5 tabel lainnya).
alternatif:
1. Tambahkan kolom di tabel TRANSAKSI (mis: DIPROSES tipe CHAR)
ALTER TABLE transaksi ADD (diproses char default 'T');
2. Looping dari tabel UPDATE untuk memeriksa TRANSAKSI (+5 lainnya).
3. Jika row tabel UPDATE ada diTRANSAKSI, lakukan update tabel TRANSAKSI
dan tandai kolom DIPROSES dengan 'Y'.
4.Setelah selesai proses updating:
-DELETE transaksi WHERE DIPROSES ='T';
-ALTER TABLE transaksi DROP (diproses);
Cara prosesnya dengan PL/SQL kira-2 :
=====================
DECLARE
variabel VARCHAR2(10);
--cursor 1 untuk tabel UPDATE
CURSOR c1 IS SELECT kol1, kol2, kol3 FROM query_dengan_tabel_UPDATE
--cursor 2 untuk tabel TRANSAKSI (serta 5 tabel lainnya).
CURSOR c2 IS SELECT t1.t1kol, t2.t2kol FROM t1, t2 WHERE ...
t1.pk = t2.fk AND t1.kolx = variabel;
vkol1 tipedata;
vkol2 tipedata;
vkol3 tipedata;
t1kol tipedata;
t2kol tipedata;
BEGIN
OPEN C1;
LOOP
FETCH c1 INTO vkol1, vkol2, vkol3;
EXIT WHEN C1%NOTFOUND;
. .
--disini letakkan pemrosesan yg diperlukan, misalnya
variabel := vkol1;
. .
OPEN C2;
LOOP
FETCH c2 INTO t1kol, t2kol;
EXIT WHEN C2%NOTFOUND;
--disini letakkan pemrosesan yg diperlukan, misalnya
UPDATE transaksi SET qty = jumlah, diproses ='Y' WHERE kondisi;
IF %NOTFOUND THEN
....
END IF
--Bisa gunakan ROWID untuk kondisi update, shg hanya 1 row yang
diupdate pada tabel TRANSAKSI
--Pertimbangkan penggunaan CURSOR ...FOR UPDATE
. . .
END LOOP;
CLOSE C2;
. . .
. . .
END LOOP;
CLOSE C1;
END;
mudah2an bisa terselesaikan.
salam,
ferry.
----- Original Message -----
From: "Jack Mania" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, July 06, 2005 3:20 PM
Subject: [indo-oracle] Re: Minta bantuan SQL
> Maaf baru balas (habis ada tugas luar, messege saya
> resume)
> Thx atas sharingnya Pak Ferry.
> Terus terang justru saya sedang kesulitan bagaimana
> script buat PL/SQL nya, yang bisa mengupdate secara
> langsung Tabel TRANSAKSI dengan referensi Tabel
> UPDATE.
> Perlu diketahui juga bahwa tidak semua data di Tabel
> TRANSAKSI ada di Tabel UPDATE jadi hanya yang masuk
> Tabel UPDATE saja yang dirubah (ini hanya saya ambil
> contoh 1 tabel yang di update, padahal saya akan
> update 5 tabel dengan kondisi/referensi yang sama).
> Saya tunggu tanggapannya.
>
> Regards,
>
> Andi
>
>
--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.blogspot.com
-----------------------------------------------
Bergabung dengan Indonesia Thin Client User Groups,
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/indo-oracle/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/