You are on page 1of 3

Rem File : No 1

Create or replace function pnol(vangka number)


Return varchar2 as
Begin
If vangka<0 then
Return Bilangan negatif;
Elseif vangka =0 then
Return Bilangan = 0;
Else
Return Bilangan positif;
End if;
End;
Begin
Dbms_output.put_line(
Angka anda adalah = ||pnol(0));
End;
Rem File : No 2
Create or replace function konversi(vrupiah number,vkonv number)
Return number as
Begin
Return vrupiah/vkonv;
End;
/
Begin
Dbms_output.put_line(
End;
/

Dolar anda adalah = ||to_char(konversi(100000,10000),$9999));

Rem File : No 3
Create or replace function fbonus(tt_jual number)
Return number is
Vbonus number:=0;
Begin
If tt_jual<=5000000 then
Vbonus:=10/100*tt_jual;
Else
Vbonus:=20/100*tt_jual;
End if;
Return vbonus;
End;
/
Select na_cust, tt_jual,fbonus(tt_jual) as fbonus from xcustomer;
Rem File : No 4
Create or replace procedure hapus_customer(pkd_cust varchar2, hasil out varchar2) is
Vtt_jual number(12);
Begin
Select tt_jual into vtt_jual from xcustomer where kd_cust=pkd_cust;
If vtt_jual >0 then
Hasil:=Data tidak dapat dihapus, tt_jual>0;
Else
Delete from xcustomer where kd_cust=pkd_cust;
Hasil:=Data sudah dihapus;
End if;
End;
/
Declare
Vnama varchar2(70) :=A03;
Vket varchar2(70);
Begin
Hapus_customer(vnama,vket);
Dbms_output.put_line (Hasilnya = ||vket);
End;

/
Rem File : No 5
Create or replace procedure banding(num1 number,num2 number) is
Begin
If num1>num2 then
Dbms_output.put_line (Angka pertama lebih besar dari angka kedua);
Elsif num1=num2 then
Dbms_output.put_line (Angka pertama sama dengan angka kedua);
Else
Dbms_output.put_line (Angka kedua lebih besar dari angka pertama);
End if;
End;
/
Begin
Banding(5,5);
End;
/
Rem File : No 6
Alter table xcustomer add(tgl_mulai date);
Create or replace trigger tgl_skrg
Before insert on xcustomer
For each row
Begin
:new.tgl_mulai :=sysdate;
End tgl_skrg;
/
insert into xcustomer(kd_cust,na_cust,alamat,tt_jual) values('X02','AGUS','Jl. DI Panjaitan 128',1000)
/
Rem File : No 7
Create table t_auditcust as select * from xcustomer
Where 1=2;
/
Alter table t_auditcust add(tgl_hapus date, nm_user varchar2(20));
Create or replace trigger catat_hapus
After delete on xcustomer
For each row
Begin
Insert into t_auditcust values(:old.kd_cust,
:old.na_cust,:old.alamat,:old.tt_jual,
:old.tgl_mulai,sysdate,user);
End catat_hapus;
/
Rem File : No. 8.
Create or replace trigger update_faktur_d
Before update of kd_stok
On faktur_d
For each row
declare
vHrg_new number;
Begin
Update stok set keluar=keluar-:old.unit where kd_stok=:old.kd_stok;
Update stok set keluar=keluar+:old.unit where kd_stok=:new.kd_stok;
Select hrg_jual into vhrg_new from stok where kd_stok=:new.kd_stok;
:new.hrg_satuan :=vhrg_new;
End update_faktur_d;
/

update faktur_d set kd_stok='003' where kd_stok='002';


Rem File : No 9
Create or replace trigger update_faktur_d
Before update or insert or delete
On faktur_d
For each row
declare
vHrg_new number;
vkd_cust varchar2(7);
Begin
If updating then
Update stok set keluar=keluar-:old.unit where kd_stok=:old.kd_stok;
Update stok set keluar=keluar+:old.unit where kd_stok=:new.kd_stok;
Select hrg_jual into vhrg_new from stok where kd_stok=:new.kd_stok;
:new.hrg_satuan :=vhrg_new;
Select kd_cust into vkd_cust from faktur where no_faktur=:new.no_faktur;
Update xcustomer
Set tt_jual=tt_jual+(vhrg_new-:old.hrg_satuan)*:new.unit
Where kd_cust=vkd_cust;
Elseif inserting then
Update stok set keluar=keluar+:new.unit where kd_stok=:new.kd_stok;
Select hrg_jual into vhrg_new from stok where kd_stok=:new.kd_stok;
:new.hrg_satuan :=vhrg_new;
Select kd_cust into vkd_cust from faktur where no_faktur=:new.no_faktur;
Update xcustomer set tt_jual=tt_jual+:new.hrg_satuan*:new.unit
Where kd_cust=vkd_cust;
Else
Update stok set keluar=keluar-:old.unit where kd_stok=:old.kd_stok;
Select kd_cust into vkd_cust from faktur where no_faktur=:old.no_faktur;
Update xcustomer set tt_jual=tt_jual-:old.hrg_satuan*:old.unit
Where kd_cust=vkd_cust;
End if;
End update_faktur_d;
/
Insert into faktur values(F007,sysdate,R01,1,U,sysdate+2,KILAT);
Insert into faktur_d values(F007,002,10,10000);
Delete from faktur_d where no_faktur=F007;
Delete from faktur where no_faktur=F007;
update faktur_d set kd_stok='003' where kd_stok='002';
Rem File : No 10
Create or replace trigger update_faktur
After update of kd_cust on faktur
For each row
declare
Vsum number;
Begin
Select sum(unit*hrg_satuan) into vsum from faktur_d where no_faktur=:old.no_faktur;
Update xcustomer set tt_jual=tt_jual-vsum where kd_cust=:old.kd_cust;
Update xcustomer set tt_jual=tt_jual+vsum where kd_cust=:new.kd_cust;
End;
/
Update faktur set kd_cust=L01 where no_faktur=F02;

You might also like