twitter






create table kategori (
kode_kategori varchar2(5),
nama_kategori varchar2(30),
constraint pk_kategori PRIMARY KEY (kode_kategori))
/

create table produk (
kode_produk varchar2(5),
kode_kategori varchar2(5),
harga_satuan number(12),
nama_produk varchar2(50),
stok number(5),
constraint pk_produk PRIMARY KEY (kode_produk),
constraint fk_kode_kategori FOREIGN KEY (kode_kategori) REFERENCES kategori (kode_kategori))
/

create table history(
    nama_user    varchar(30),
    waktu        varchar2(25),
    keterangan    varchar(90));

create table pembeli (
kode_pembeli varchar2(5),
nama_pembeli varchar2(30),
alamat varchar2(45),
kode_pos number(5),
provinsi varchar2(20),
kota varchar2(20),
telepon varchar2(12),
constraint pk_pembeli PRIMARY KEY (kode_pembeli))
/

create table pesanan (
kode_pesanan varchar(5),
kode_pembeli varchar(5),
tanggal_pemesanan date,
constraint pk_pesanan PRIMARY KEY (kode_pesanan),
constraint fk_kode_pembeli FOREIGN KEY (kode_pembeli) references pembeli (kode_pembeli))
/

create table detail_pesanan (
kode_produk varchar2(8),
kode_pesanan varchar2(8),
jumlah_pesanan varchar(15),
constraint pk1_dproduk PRIMARY KEY (kode_produk, kode_pesanan),
constraint fk2_kode_produk FOREIGN KEY (kode_produk) references produk (kode_produk) on delete cascade,
constraint fk3_kode_pesanan FOREIGN KEY (kode_pesanan) references pesanan (kode_pesanan)on delete cascade)
/

TRIGGER

create or replace trigger update_produk_stok
before insert on detail_pesanan
for each row
declare
    v_stok number(3);
begin
    select stok into v_stok from produk where kode_produk = :new.kode_produk;
   
    if (v_stok - :new.jumlah_pesanan < 0) then
        raise_application_error(-20001, 'Jumlah pembelian lebih besar daripada sisa stok');
    else
        update produk
        set stok = stok - :new.jumlah_pesanan
        where kode_produk = :new.kode_produk;
    end if;
end;
/

FUNCTION
create or replace function hitung_harga_total
(v_harga number, v_jumlah number)   
return number
is
begin
    return v_harga * v_jumlah;
end;
/

-----------------------------------------------------------------------------------------------------

create or replace function hitung_harga_keseluruhan
(v_kode_pesanan varchar2)
return number
is
    v_harga_total number(15);
begin
    select sum( b.harga_satuan * dp.jumlah_pesanan )
        into v_harga_total
        from produk b, detail_pesanan dp
        where b.kode_produk = dp.kode_produk
            and dp.kode_pesanan = v_kode_pesanan;

    return  v_harga_total;
end;
/
PROCEDURE
create or replace procedure detail_pembeli
(v_kode_pembeli varchar2)
is
    cursor cursor_pembeli is
        select * from pembeli
        where kode_pembeli = v_kode_pembeli;
       
    cursor cursor_daftar is
        select tanggal_pemesanan, kode_pesanan
        from pesanan
        where kode_pembeli = v_kode_pembeli;
   
    v_kode_pesanan pesanan.kode_pesanan%type;
    v_harga_pembelian number(15);
   



begin   
    dbms_output.put_line('-----------------------------------------------------');
   
    dbms_output.put_line('Detail Pembeli');
   
    dbms_output.put_line('-----------------------------------------------------');
   
    for pembeli in cursor_pembeli
        loop
            dbms_output.put_line(rpad('Kode Pembeli', 15) || ' : ' || pembeli.kode_pembeli );
            dbms_output.put_line(rpad('Nama', 15) || ' : ' || pembeli.nama_pembeli );
            dbms_output.put_line(rpad('Alamat', 15) || ' : ' || pembeli.alamat );
            dbms_output.put_line(rpad('Kota', 15) || ' : ' || pembeli.kota );
            dbms_output.put_line(rpad('Provinsi', 15) || ' : ' || pembeli.provinsi );
            dbms_output.put_line(rpad('No Telepon', 15) || ' : ' || pembeli.telepon);
    end loop;
   
    dbms_output.put_line('-----------------------------------------------------');
   
    dbms_output.put_line('Daftar Pembelian');
   
    dbms_output.put_line('-----------------------------------------------------');
   
    dbms_output.put(rpad('Tanggal', 10));
    dbms_output.put(rpad('Kode Pesanan', 10));
    dbms_output.put_line(lpad('Harga Total', 15));
   
    dbms_output.put_line('-----------------------------------------------------');
   
    for daftar in cursor_daftar
        loop
            dbms_output.put(rpad(daftar.tanggal_pemesanan, 10));
           
            v_kode_pesanan := daftar.kode_pesanan;
            dbms_output.put(rpad(v_kode_pesanan, 10 ));
           
            v_harga_pembelian := hitung_harga_keseluruhan(v_kode_pesanan);
            dbms_output.put_line(lpad(v_harga_pembelian, 15));
    end loop;
   
    dbms_output.put_line('-----------------------------------------------------');

end;
/   

-----------------------------------------------------------------------------------------------------

create or replace procedure struk_pembelian
(v_kode_pesanan varchar2)
is
    v_nama pembeli.nama_pembeli%type;
   
    v_jumlah detail_pesanan.jumlah_pesanan%type;
    v_harga produk.harga_satuan%type;
    v_harga_total number(12);
    v_harga_keseluruhan number( 15 );
   
    cursor cursor_pembelian is
        select dp.kode_produk, p.nama_produk, p.harga_satuan, dp.jumlah_pesanan
        from produk p, detail_pesanan dp
        where p.kode_produk = dp.kode_produk
        and kode_pesanan = v_kode_pesanan;
begin
    select nama_pembeli
        into v_nama
        from pembeli b, pesanan p
        where b.kode_pembeli = p.kode_pembeli
        and p.kode_pesanan = v_kode_pesanan;

    dbms_output.put_line('--------------------------------------------------------------------------------');
       
    dbms_output.put_line(rpad('Kode Pesanan ', 15) || ' : ' || v_kode_pesanan );
    dbms_output.put_line(rpad('Nama Pembeli ', 15) || ' : ' || v_nama );
   
    dbms_output.put_line('--------------------------------------------------------------------------------');

    dbms_output.put(rpad('Kode Produk', 12));
    dbms_output.put(rpad('Nama Produk', 30));
    dbms_output.put(lpad('Harga Satuan', 12));
    dbms_output.put(lpad('Jumlah', 10));
    dbms_output.put_line(lpad('Harga Total', 15));

    dbms_output.put_line('--------------------------------------------------------------------------------');
   
    for pembelian in cursor_pembelian
        loop
            dbms_output.put(rpad(pembelian.kode_produk, 12));
            dbms_output.put(rpad(pembelian.nama_produk, 30));
           
            v_harga := pembelian.harga_satuan;
            dbms_output.put(lpad(v_harga, 12));
           
            v_jumlah := pembelian.jumlah_pesanan;
            dbms_output.put(lpad(v_jumlah, 10));
           
            v_harga_total := hitung_harga_total( v_harga, v_jumlah );

            dbms_output.put(lpad(v_harga_total, 15));
           
            dbms_output.new_line;
    end loop;
   
    dbms_output.put_line('--------------------------------------------------------------------------------');
   
    v_harga_keseluruhan := hitung_harga_keseluruhan(v_kode_pesanan);
   
    dbms_output.put_line('Total : ' || v_harga_keseluruhan);
   
    dbms_output.put_line('--------------------------------------------------------------------------------');
end;
/


Thank You Myspace Comments
MyNiceProfile.com



Sabtu, 29 Januari 2011 | 0 komentar | Label:

0 komentar:

Posting Komentar