41
Bab IV IMPLEMENTASI SISTEM
4.1. Spesifikasi Software dan Hardware yang Digunakan
4.1.1. Spesifikasi Software
Spesifikasi software yang digunakan untuk implementasi sistem pemerolehan informasi ini adalah sebagai berikut :
1. Sistem Operasi Windows 7 Ultimate 32 bit 2. Oracle XE
3. Oracle SQL Developer 4. Netbeans 7.2.1
5. Browser : Google Chrome
4.1.2. Spesifikasi Hardware
Spesifikasi hardware yang digunakan untuk implementasi sistem pemerolehan informasi ini adalah sebagai berikut :
1. Prosesor : Intel Core i3- 380M 2,53 GHz 2. Memori RAM 4 GB DDR 3
3. Harddisk 500GB
4.2. Implementasi Stored Procedure
4.2.1. Implementasi Stored Procedure untuk inserttransaksi
penyewaan .
Berikut adalah listing program insert penyewa disajikan pada gambar 4.1, store procedure ini digunakan untuk memasukan
semua data dari penyewa, kamar, dan tanggal kedalam database.Stored Procedure ini juga berguna dalam menangani
masalah concurrency control, dengan menerapkan protokol 2PLtwo phase locking dengan memberi query FOR UPDATE
OF. Locking berjalan ketika cursoremp_idkamarsewa dipanggil, cursor berguna untuk mengunci id_kamar_sewa dari tabel kamar
sewa yang sesuai dengan nomor kamar yang kosong dan juga memiliki status F. Setelah melakukan penguncian pada
id_kamar_sewa, maka kamar yang telah ditunjuk akan diganti statusnya dari F menjadi B. Setelah itu memasukan data diri
penyewa dan memberi id_sewa pada tabel kamar sewa sesuai dengan nomor id sewa dari penyewa. Pengambilan nomor order
menggunakan fuction get_noorder.lihat pada Lampiran A
create or replace PROCEDURE INSERT_PENYEWA3
p_noid in penyewa.id_penyewatype, p_name in penyewa.nama_penyewatype,
p_notlp in penyewa.no_tlptype, p_alamat in penyewa.alamattype,
p_email in penyewa.emailtype, p_idkmr in kamar.id_kamartype,
p_jmlkmr in number, p_hargaDP in number,
p_in in transaksi_sewa.tanggal_intype, p_out in transaksi_sewa.tanggal_outtype,
p_status out number is
ex_no_data_found EXCEPTION; i int;
j int; conter int :=0;
v_maxid transaksi_sewa.id_sewatype; v_idpenyewa penyewa.id_penyewatype;
v_idkamarsewa kamar_sewa.id_kamar_sewatype; cursor emp_transaksi is
select DISTINCTks.tanggal from kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = F
and ks.tanggal between p_in and p_out order by ks.tanggal;
emp_record emp_transaksirowtype; cursor emp_transaksi1 is
select DISTINCTks.tanggal from kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = B and ks.id_sewa = 0
and ks.tanggal between p_in and p_out order by ks.tanggal;
emp_record4 emp_transaksirowtype;
cursor emp_kamar is select ks.no_kamar from kamar_sewa ks, kamar k
where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = F and ks.tanggal between p_in and p_out
group by ks.no_kamar having countks.tanggal = select countDISTINCTtanggal FROM kamar_sewa ks, kamar k
where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.tanggal between p_in and p_out order by ks.no_kamar;
emp_record2 emp_kamarrowtype; cursor emp_kamar1 is
select ks.no_kamar from kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = B and ks.id_sewa = 0
and ks.tanggal between p_in and p_out group by ks.no_kamar having countks.tanggal = select countDISTINCTtanggal
FROM kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.tanggal between p_in and p_out
order by ks.no_kamar; emp_record5 emp_kamarrowtype;
cursor emp_idkamarsewap_nokamar in kamar_sewa.no_kamartype is select id_kamar_sewa from kamar_sewa
where no_kamar = p_nokamar and tanggal between p_in and p_out and status = F order by id_kamar_sewa
FOR UPDATE OF id_kamar_sewa; emp_record3 emp_idkamarsewarowtype;
cursor emp_penyewa is select id_penyewa
from penyewa where id_penyewa = p_noid;
emp_record6 emp_penyewarowtype;
BEGIN open emp_kamar;
loop fetch emp_kamar into i;
open emp_idkamarsewai; fetch emp_idkamarsewa into emp_record3;
close emp_idkamarsewa; if i is null then
raise ex_no_data_found; else
open emp_transaksi; loop
fetch emp_transaksi into emp_record; exit when emp_transaksinotfound;
update kamar_sewa set status = B where no_kamar = i and tanggal = select DISTINCTtanggal from kamar_sewa ks, kamar k
where ks.no_kamar = k.no_kamar and ks.no_kamar = i and k.id_kamar = p_idkmr and ks.tanggal = emp_record.tanggal;
end loop; exit when emp_kamarrowcount = p_jmlkmr;
close emp_transaksi; end if;
end loop; close emp_kamar;
open emp_penyewa; fetch emp_penyewa into emp_record6;
v_maxid := get_noorder; if emp_record6.id_penyewa is null then
insert into penyewa valuesp_noid, p_name, p_notlp, p_alamat, p_email;
insert into transaksi_sewa valuesv_maxid, p_noid, p_in, p_out, , sysdate, 0,p_hargaDP; else
v_maxid := get_noorder; insert into transaksi_sewa valuesv_maxid, p_noid, p_in, p_out, , sysdate, 0,p_hargaDP;
end if; close emp_penyewa;
open emp_kamar1; loop
fetch emp_kamar1 into j; if j is null then
raise ex_no_data_found; else
open emp_transaksi1; loop
fetch emp_transaksi1 into emp_record4; update kamar_sewa set id_sewa = v_maxid where no_kamar = i and tanggal = select
DISTINCTtanggal from kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and ks.no_kamar = i and k.id_kamar = p_idkmr and ks.tanggal =
emp_record4.tanggal; exit when emp_transaksi1notfound;
end loop; exit when emp_kamar1rowcount = p_jmlkmr;
close emp_transaksi1; end if;
end loop; close emp_kamar1;
commit; p_status:=1;
EXCEPTION WHEN ex_no_data_found THEN
Gambar 4.1Insert Penyewa
4.2.2. Implementasi Stored Procedure untuk menghapus transaksi