Koneksi ke Database Implementasi Store Procedure

a. Sistem operasi windows 7 b. Browser : Google Chrome

4.3 Tampilan Program dan Penjelasan

Pada Bagian ini akan dijelaskan jalannya program dan script yang dibutuhkan untuk menjalankan program tersebut.

4.3.1 Koneksi ke Database

Untuk dapat mengakses database pada server dibutuhkan suatu file koneksi. Pada program ini file koneksi menggunakan bahasa PHP, yang scriptnya dapat dilihat pada gambar 4.1. Name : Configures Database Name File : inventaris\application\config\database.php ?php if definedBASEPATH exitNo direct script access allowed; active_group = default; active_record = TRUE; cONFIG CONNECT TO ORACLE tns = DESCRIPTION= ADDRESS= PROTOCOL=TCP HOST=localhost PORT=1521 CONNECT_DATA= SERVER=dedicated SERVICE_NAME=XE ; db[default][hostname] = tns; db[default][username] = inventaris; db[default][password] = 123456; db[default][database] = ; db[default][dbdriver] = oci8; db[default][dbprefix] = ; db[default][pconnect] = TRUE; db[default][db_debug] = TRUE; db[default][cache_on] = FALSE; db[default][cachedir] = ; db[default][char_set] = utf8; db[default][dbcollat] = utf8_general_ci; db[default][swap_pre] = ; db[default][autoinit] = TRUE; db[default][stricton] = FALSE; Gambar 4.1. Koneksi ke Database

4.3.2 Implementasi Store Procedure

Berikut adalah listing program insert transaksi barang dipakai disajikan pada gambar 4.2, store procedure ini digunakan untuk memngurangi stok barang dari nomor inventaris barang yang dimasukkan. Store procedure ini juga berguna dalam menangani concurrency control, dengan menerapkan protokol 2PLtwo phase lokcing dengan memberi query FOR UPDATE. Locking berjalan ketika nomor inventaris dipanggil, perintah FOR UPDATE berguna untuk mengunci quantity dari tabel transaksi barang agar tidak terbaca oleh user lain. Setelah melakukan penguncian pada quantity, maka nomor inventaris yang telah ditunjuk akan dikurangi stoknya. create or replace PACKAGE PACKAGE_BARANG_HABIS_PAKAI AS TODO enter package declarations types, exceptions, methods etc here PROCEDURE P_SIMPAN_BARANG_PAKAI pIdTransaksi IN VARCHAR2, pNoInventaris IN VARCHAR2, pQuantity IN NUMBER, pDeskripsi IN VARCHAR2, pUserUpdate IN VARCHAR2, pUpdatedQuantity IN NUMBER, pStatus OUT NUMBER ; END PACKAGE_BARANG_HABIS_PAKAI; create or replace PACKAGE BODY PACKAGE_BARANG_HABIS_PAKAI AS Status Out 0 = Berhasil 1 = No inventaris Null Tidak ada 2 = Record Quantity sama dengan 0 3 = hasil pengurangan minus. PROCEDURE P_SIMPAN_BARANG_PAKAI pIdTransaksi IN VARCHAR2, pNoInventaris IN VARCHAR2, pQuantity IN NUMBER, pDeskripsi IN VARCHAR2, pUserUpdate IN VARCHAR2, pUpdatedQuantity IN NUMBER, pStatus OUT NUMBER IS noInventaris TRANS_BARANG.NO_INVENTARIStype; stockQuantity TRANS_BARANG.QUANTITYtype; updatedQuantity TRANS_BARANG.QUANTITYtype; eInvalid1 EXCEPTION; eInvalid2 EXCEPTION; eInvalid3 EXCEPTION; BEGIN SELECT QUANTITY INTO stockQuantity FROM TRANS_BARANG TB WHERE TB.NO_INVENTARIS= pNoInventaris FOR UPDATE; updatedQuantity := stockQuantity - pQuantity; IF pNoInventaris IS NULL THEN RAISE eInvalid1; ELSE IF stockQuantity = 0 THEN RAISE eInvalid2; ELSE IF updatedQuantity 0 THEN RAISE eInvalid3; ELSE -- Update Quantity Barang. UPDATE TRANS_BARANG SET QUANTITY = updatedQuantity WHERE NO_INVENTARIS = pNoInventaris; -- Insert into Transaksi Barang Pakai. INSERT INTO TRANS_BARANG_DIPAKAI_DETAIL TBDD VALUESpIdTransaksi,SYSDATE, pNoInventaris, pQuantity, pDeskripsi, pUserUpdate, SYSDATE; pStatus := 0; COMMIT; END IF; END IF; END IF; EXCEPTION WHEN eInvalid1 THEN pStatus := 1; ROLLBACK; WHEN eInvalid2 THEN pStatus := 2; ROLLBACK; WHEN eInvalid3 THEN pStatus := 3; ROLLBACK; END P_SIMPAN_BARANG_PAKAI; END PACKAGE_BARANG_HABIS_PAKAI; Gambar 4.2. Insert Transaksi Barang Dipakai

4.3.3 Halaman Login