Pages

Friday, July 18, 2014

Procedure & Function

Store Procedure
 Store Procedure yaitu sub program yang digunakan untuk melakukan proses tertentu dan tidak mengembalikan nilai, bisa disimpan dalam database sebagai object skema, sehingga suatu procedure bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang. 

Function
Function yaitu Sebuah kumpulan Statement yang akan mengembalikan sebuah nilai balik pada pemanggilnya. Nilai yang dihasilkan Function harus ditampung kedalam sebuah variabel. Perbedaan function dan procedure, yaitu : Kalau function dia akan mengembalikan suatu nilai pada pemanggilnya, sedangkan procedure dia tidak akan mengembalikan nilai apapun pada fungsi pemanggilnya ,



Salah satu perbedaan produk oracle dan SQL Server terdapat dalam tatacara penulisan Syntax Query, dimana dalam SQL Server sering disebut sebagai Transact-SQL (TSQL) sedangkan dalam Oracle sering disebut PL/SQL. Secara umum Store Procedure dan Function dalam tiap parameter mengandung : 
1. Nama Parameter 
2. Penggunaan (IN,OUT, IN-OUT)
3. Tipe Data (IN) 

Parameter input yang seharusnya tidak mengalami perubahan. (OUT) adalah parameter output yang memberikan suatu nilai didalam procedure dan bisa merupakan sebuah parameter baru atau variable baru jika didalam function, karena merupakan nilai balik (RETURN) sehingga sering dalam function disebut tidak terdapat OUT. (IN-OUT) adalah parameter input-output, yang seharusnya memiliki suatu nilai input yang telah disediakan diluar procedure/function, akan tetapi dapat diubah saat didalam procedure/function.

Syntax Store Procedure dalam PL/SQL



Untuk melihat hasilnya dari prompt SQL ketikkan EXECUTE nama-prosedure. Atau bisa diingkat menjadi EXEC nama-prosedure.

Store procedure dan function dalam produk Oracle/SQL Server ada yang sudah merupakan bagian fitur dari produk tersebut, sehingga tinggal digunakan, seperti :
ABS, ACOS, ASIN, ATAN, ADDCOLUMNS, AVERAGE, AVERAGEA, AVERAGEX, dan masih banyak lagi fitur yang terdapat dalam produk Oracle/SQL Server, dan terus berkembang. Untuk menjalankan Procedure/Function secara umum menggunakan EXEC atau EXECUTE.

STORE PROCEDURE MENGGUNAKAN SQL SERVER 2000
1. Buat SP baru dengan nama InsertMenu
create procedure InsertMenu
@Kode_Menu int,
@ID_Customer int,
@Nama_Menu varchar(20),
@Jumlah_Menu varchar(10),
@Tgl_Order varchar(10);
As
BEGIN
SET NOCOUNT ON;
INSERT INTO Catering VALUES(@Kode_Menu, @ID_Customer, @Nama_Menu, @Jumlah_Menu, @Harga, @Tgl_Order;
END
EXEC InsertMenu ‘1412’, 20001’, ‘Nasi Padang Ikan Ayam’, ‘1 Porsi’, ‘Rp.15.000,-, ’15 Juni 2014’

Data yang ditampilkan

2. Buat SP dengan nama InsertPegawai
create procedure InsertPegawai
@Kode_Pegawai int,
@ID_Customer int,
@Nama_Pegawai varchar(20),
@Alamat varchar(20),
@No_Telp varchar(12);
As
BEGIN
SET NOCOUNT ON;
INSERT INTO Pegawai VALUES(@Kode_Pegawai, @Nama_Pegawai, @Alamat, @No_Telp;
END
EXEC InsertPegawai ‘11120054’, ‘Agus Santoso’, Jl.Merkuri Purnama’, ‘08785678801’


Data yang ditampilkan
3. Buat SP baru dengan nama InsertBahanProduksi
create procedure InsertBahanProduksi
@Kode_Barang int,
@Nama_barang varchar(20),
@Harga_barang varchar(20),
@Tgl_Pembelian_Barang varchar(20);
As
BEGIN
SET NOCOUNT ON;
INSERT INTO Bahan_Produksi VALUES(@Kode_Barang, @Nama_Barang, @Harga_Barang, @Tgl_Pembelian_Barang;
END
EXEC InsertBahanProduksi ‘10026’, ‘Kepiting’, ‘Rp.250.000,-‘, ’08 Juni 2014’

Data yang ditampilkan

4. Buat SP baru dengan nama InsertMember
create procedure InsertMember
@No_Member_Baru int,
@Disc varchar(3),
As
BEGIN
SET NOCOUNT ON;
INSERT INTO Member VALUES(@No_Member_baru, @id_cust,@disc)
END
EXEC InserMember ‘1226’, 200025’, ‘10%’

Data yang ditampilkan

5. Tampilkan SP pada ViewCustomer
Create procedure ViewCustomer
As
Select *from customer
Exec ViewCustomer

Data yang ditampilkan

6. Tampilkan SP pada ViewMember

Create procedure ViewMember
As
Select *from Member
Exec ViewMember

Data yang ditampilkan


7. Tampilkan SP pada ViewCatering
Create procedure ViewCatering
As
Select *from catering
Exec ViewCatering
Data yang ditampilkan

8. Buat SP Update Customer untuk mengupdate data customer yang telah ada
Alter procedure UpdateCustomer
@ID_Customer int,
@No_Telp varchar(12)
As
Begin
Set nocount on;
Update customer set no_telp = @No_Telp where ID_Customer =@ID_Customer
End
Exec UpdateCustomer 20001, ‘085678012290’

Data yang ditampilkan sebelum di update

Tampilan data setelah di update

FUNCTION MENGGUNAKAN SQL SERVER 2000
1. Function ViewPenjualan
Create FUNCTION ViewPenjualan
(@Kode_Menu int)
Returns table
As
Return
Select ID_Customer, Nama_Menu, Jumlah_Menu
From Catering
Where Kode_Menu=@Kode_Menu
Select *from ViewPenjualan (1120)

Data yang ditampilkan

2. Function TotalPembayaran
Alter FUNCTION TotalPembayaran
(@ID_Customer int)
Return
Select ID_Customer, Nama_Menu, Jumlah_Menu AS TotalPembayaran FROM Catering
Where ID_Customer=@ID_Customer
Select *from TotalPembayaran (20004)

Data yang ditampilkan

3. Function Diskon
create FUNCTION Diskon
(@No_Member int)
returns table
as
return
select No_Member, ID_Customer, Diskon
from Member
where No_Member=@No_Member
select *from Diskon (1111)

Data yang ditampilkan

4. Function TotalPesanan
alter function TotalPesanan
(@ID_Customer int)
returns table
as
return
SELECT *from TotalPesanan (20006)

Data yang ditampilkan

STORE PROCEDURE MENGGUNAKAN ORACLE
1. Buat SP baru dengan nama InsertMenu
create or replace procedure InsertMenu
(p_id_menu in catering.kode_menu%TYPE,
p_id_customer in catering.id_customer%TYPE,
p_menu in catering.nama_menu%TYPE,
p_jumlah in catering.jumlah_menu%TYPE,
p_harga in catering.harga%TYPE,
p_tgl_pesan in catering.tgl_order%TYPE)
IS
BEGIN
INSERT INTO CATERING values (p_id_menu, p_id_customer,p_menu, p_jumlah, p_harga, p_tgl_pesanan);
COMMIT;
END
EXEC InsertMenu (‘2354’, ‘200025’, ‘susu kuda liar’, ‘10’, ‘2000000’, ’20 Juni 2014’)

Data yang ditampilkan

2. Buat SP baru dengan nama InsertPegawai
CREATE OR REPLACE PROCEDURE INSERTPEGAWAI
(vid in pegawai, kode_pegawai%TYPE,
vnama in pegawai.nama_pegawai%TYPE,
valamat in pegawai.alamat%TYPE,
vno_telp in pegawai (kode_pegawai, nama_pegawai, alamat, no_telp)
as
begin
insert into pegawai (kode_pegawai, nama_pegawai, alamat, no_telp)
commit;
end;
exec insertpegawai(11120024,’cinta’, ‘jl.patah hati’, ‘081406832612’)
Data yang ditampilkan

3. Buat SP baru dengan nama InsertBahanProduksi
Create or replace procedure insertbahan
(mkode in bahan_produksi, kode_barang%type,
mbahan in bahan_produksi.nama_barang%type,
mharga in bahan_produksi.harga_bahan%type,
mpembelian in bahan_produksi, tgl_pembelian_barang%type)
as
begin
insert into bahan_produksi(bahan_produksi, kode_barang, bahan_produksi, nama_barang, bahan_produksi,tgl_pembelian_barang)
end;
exec insertbahan(10026,’jagungmanis’, ‘Rp20.000’, ’20 Juni 2014’)
Data yang ditampilkan

4. Buat SP baru dengan nama InsertMember
Create or replace procedure insertmember
(vno_member in member.no_member%type,
vid_customer in member, id_customer%type,
vdiskon in member, diskon%type)
as
begin
insert into member (no_member, id_customer, diskon)
values(vno_member, vid_customer,vdiskon);
commit;
end;
exec insertmember (‘1227’, ‘200016’, ‘10%’)

Data yang ditampilkan

5. Tampilkan SP dengan nama viewpenjualan
create or replace function viewpenjualan
(v_id in catering.kode_menu%type)
return aypackage.ref_cursor;
begin
open jualanku for
select id_customer, nama_menu, jumlah_menu from catering where kode_menu like v_id||%;
return jualanku;
end;

Data yang ditampilkan

FUNCTION MENGGUNAKAN ORACLE
1. Function viewpenjualan
create or replace function viewpenjualan
(v_id in catering.kode_menu%type)
return aypackage.ref_cursor
as
jualanku aypackage.ref_cursor;
begin
open jualanku for
select id_customer, nama_menu, jumlah_menu from catering where kode_menu like v_id||’%’;
return jualanku;
end;

Data yang ditampilkan

2. Function totalharga
create or replace function totalharga
(jualan_menu member,
harga member)
as
begin
return (jumlah_menu *harga);
end;

Data yang ditampilkan

3. Function Diskon
create or replace function diskon(
v_id in member, no_member%type)
return aypackage.ref_cursor;
as
memberku aypackage.ref_cursor;
begin
open memberku for
select *from member where no_member like v_id||’%’;
return memberku;
end;

Data yang ditampilkan

4. Function TotalPesanan
create or replace function totalpesanan
(
id_customer1 in member
)
return sys_refcursor;
begin
open jml
for select sum(jumlah_menu) as total_pesanan_menu from catering where id_customer=id_customer1;
return jml;
end;

Data yang ditampilkan




0 comments:

Post a Comment