0% menganggap dokumen ini bermanfaat (0 suara)
81 tayangan34 halaman

Laporan Basis Data Modul 7

Laporan ini membahas tentang stored procedure pada basis data. Stored procedure merupakan kumpulan perintah SQL yang digunakan untuk melakukan tugas khusus seperti mengakses dan memanipulasi data. Laporan ini menjelaskan cara membuat stored procedure, keuntungan menggunakannya seperti kinerja yang lebih baik dan keamanan data yang lebih tinggi, serta latihan-latihan membuat stored procedure sederhana dengan parameter.

Diunggah oleh

Deviemor
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
81 tayangan34 halaman

Laporan Basis Data Modul 7

Laporan ini membahas tentang stored procedure pada basis data. Stored procedure merupakan kumpulan perintah SQL yang digunakan untuk melakukan tugas khusus seperti mengakses dan memanipulasi data. Laporan ini menjelaskan cara membuat stored procedure, keuntungan menggunakannya seperti kinerja yang lebih baik dan keamanan data yang lebih tinggi, serta latihan-latihan membuat stored procedure sederhana dengan parameter.

Diunggah oleh

Deviemor
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 34

LAPORAN MODUL VII

PRAKTIKUM BASIS DATA

STORED PROCEDURE

Disusun untuk memenuhi

Matakuliah Praktikum Basis Data

Yang Dibimbing oleh Bapak Utomo Pujianto, S.T., M.T.

ANGGOTA KELOMPOK :

Septian Adi Pratama 150533604474

Tri Rizki Herlambang 150533603849

PTI 2015 OFFERING D

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA

APRIL 2016
MODUL VII
“STORED PROCEDURE”

1. Tujuan
 .Memahami konsep dasar stored procedure, kelebihan dan kekurangannya.
 .Memahami implementasi stored procedure di dalam basis data.
 Mampu menyelesaikan kasus retrieval yang melibatkan lebih dari satu entitas.
 Mampu menyelesaikan operasi-operasi data spesifik dengan memanfaatkan
stored procedure.
2. Dasar Teori
A. Penggunaan Store Procedure dalam SQL
Store Procedure adalah kumpulan Pre-defined Transact-SQL yang digunakan
untuk melakukan tugas/task khusus. Dalam Store Procedure dapat berisi beberapa
statement dan setiap statement di kelompokan untuk satu object database.

Bagaimana cara membuat store procedure? Untuk membuat store procedure, kita


hanya menjalankan perintah “create procedure” diikuti dengan SQL script. Kita
bisa meembuat store procedure melalui Query Analyzer pada MS SQL Server,
atau dengan menggunakan menu New Procedure pada Enterprise Manager. 
Kerangka sederhana Store Procedure:

CREATE PROC procedure_name


[ { @parameter data_type } 

AS sql_statement 

Store Procedure terdiri dari:


1. Statemen CREATE PROC {PROCEDURE}
2. Nama Procedure; 
3. Parameter list 
4. SQL statement. 

Banyak option lainnya dalam mendefinisikan store procedure, dalam laporan ini

1
hanya beberapa saja yang disebutkan, hanya sebagai gambaran awal dalam
membuat store procedure.

B. Keuntungan menggunakan Store Procedure


Penggunaan store procedure dalam sebuah pemrograman database memiliki
beberapa keuntungan atau kelebihan sebagai berikut:

1. Performance 
Semua perintah SQL, yang kita kirimkan ke database server melalui
kumpulan action yang disebut dengan execution. Hal ini menjadikan perintah
SQL yang kita kirimkan melalui beberapa proses sebelum data dikembalikan
ke client.
User mengirimkan request untuk mengeksekusi store procedure.SQL Server
kemudian mengecek apakah ada syntax error. Mengidentifikasi dan melakukan
pengecekan alias pada FROM clausa.Membuat query plan. Meng-compile dan
kemudian mengeksekusi query plan untuk kemudian mengembalikan data yang
diminta.
Ada banyak proses yang tidak kita ketahui yang dijalankan, kemudian
apakah dengan menggunakan store procedure kita akan mem bypass hal
tersebut ?
Di satu sisi, ya. Versi terdahulu pada SQL Server menyimpan execution plan
yang telah dieksekusi dalam system tables, membuat sebagian pre-compiled.
Hal ini meningkatkan performance, karena server tidak melakukan kompilasi
store procedure setiap kali ia dipanggil.
Pada versi terbaru SQL server, ada banyak perubahan pemrosesan
statement. Store Procedure disimpan dalam procedure cache ketika di panggil,
membuat subsequent lebih cepat dipanggil.
2. Security
Store Procedure memberikan keuntungan yang baik dalam hal security.
Dengan menggunakan store procedure, kita bisa untuk dapat mengakses data,
menekan immense coding yang perlu kita lakukan pada Application Client. Ini
adalah cara terbaik untuk mengontrol akses ke data. memberikan permission
untuk user yang ditunjuk.

2
3. Modifications/Maintenance 
Jika kita menggunakan store procedure untuk mengakses database, setiap
perubahan pada database dapat dipantau berdasarkan client application. Hal ini
dimungkinkan karena kita dapat tahu persis dimana data diakses, dan kita juga
tahu dimana kita harus melakukan perubahan. Hal ini berarti kita tidak perlu
pusing kepala dengan ribuan baris source code pada client application untuk
menemukan baris mana yang perlu dirubah.
4. Minimal processing at the client. 
Ketika membuat aplikasi client/server, normalnya adalah client yang
bertanggung jawab mengenai integritas data yang masuk ke dalam database.
Mengelola Primary Key,Foreign Key, semuanya dilakukan oleh client, dan
database server hanya bertugas menyimpan data yang di berikan client.
Dengan menggunakan store proocedure membantu kita untuk membuat batch
perintah SQL, yang bisa digunakan untuk memanage transaction,constraints
dll. Hanya sedikit daya yang ditulis pada client apllication, menjadikan aplikasi
client menjadi lebih ringan. Aplikasi ini akan lebih terfokus pada menampilkan
data untuk keperluan user dan aplikasi client tidak tau banyak mengenai
database.
Sebagai contoh. Jika kita memiliki database yang berisi ribuan rows dan
ratusan table. Kita memerlukan beberapa perhitungan sebelum melakukan
update pada setiap record. Jika kita mengambil data secara lengkap ke client,
dan meminta client computer untuk memproses data secara lengkap, bisa
dibayangkan apa yang ditimbulkan. Tetapi jika client bisa mengeksekusi store
procedure, ketika kita telah selesai melakukan calculasi untuk melakukan
update pada record.Client tidak perlu melakukan proses calculasi. Hal ini juga
menekan proses yang terjadi di client, dan server yang menjalankan
kalkulasinya.
5. Network traffic
Aplikasi pada client selalu me request/ mengirimkan data ke database
server. Data ini dikirimkan sebagai packet dan dikirimkan ke
jaringan(Network) ke server.

3
Dalam implementasi nyata, penggunaan stored procedure sering melibatkan parameter. Di
MySQL, parameter stored procedure dibedakan menjadi tiga mode: IN, OUT, dan INOUT

3. Latihan
3.1. Latihan 1 (Membuat Procedure)
3.1.1. Langkah – langkah
a. Membuat tabel bernama getMahasiswa dengan pernyataan SQL
sebagai berikut :
DELIMITER //
Create PROCEDURE getMahasiswa()
BEGIN
SELECT * FROM
mahasiswa2;
END

DELIMITER //

b. Mengeksekusi file sored procedure


c. Memanggil stored procedure getMahasiswa()
d. Mendapatkan informasi mengenai status stored procedure
e. Mendapatkan informasi pembuatan stored procedure
f. Menghapus stored procedure
3.1.2. Printscreen
a. Membuat tabel getMahasiswa

b. Pemanggilan stored procedure

4
c. Mendapatkan informasi mengenai status procedure status;

d. Mendapatkan informasi pembuatan procedure status;

e. Menghapus stored procedure

3.1.3. Keterangan
Sama dengan sebelumnya, untuk membuat procedure kita akan Pada
langkah awal kita membuat TRIGGER kita harus mengetikan
delimiter// untuk awal nya, setelah itu kita akan mulai dengan
memasukan table prodecure getMahasiswa. dan jika kita ingin
memulainya kita bisa mendapatkan informasi
table dari mahasiswa 2 dengan begitu program dapat berjalan. dan
jangan lupa untuk di akhir dari program kita harus menggunakan
delimiter //. setelah kia sudah selesai menyeleksi programnya,

5
kita dapat melihat table prodecura dari getMahasiswa sama dengan
table dari mahasiswa2. dan sama juga seperti Trigger, jika kita ingin
mendapatkan informasi dari pada prodecure yang kita buat
kita dapat menggunakan show prodecure

3.2. Latihan 2 (Parameter IN)


3.2.1. Langkah – langkah
a. Tuliskan pernyataan SQL berikut untuk mendapatkan semua data
di semester tertentu.
DELIMITER //
Create PROCEDURE getMatakuliahBySemester(IN
INT(3))
BEGIN
SELECT * FROM matakuliah;
WHERE semester=smt;

END

DELIMITER ;

b. mendapatkan matakuliah semester 3

CALL getMatakuliahBySemester(3);

c. membuat stored procedure dengan dua variable


DELIMITER //
Create PROCEDURE getMatakuliahBySemSks(
IN Smt INT(3)
IN Sks INT(3))
BEGIN
SELECT *
FROM matakuliah;
WHERE semester=smt;

END //

DELIMITER ;

d. melakukan pemanggilan pada stored procedure:

CALL getMatakuliahBysemSks(3,2);

6
e. mendeklarasikan variabel bernama smt dan inisialisasi dengan
nilai 3.

SET @smt=3;

f. Memeriksa nilai variabel menggunakan SELECT

SET @smt=3;

g. Memanfaatkan variable yang tealh dideklarasikan sebagai


argumen stored procedure

CALL getMatakuliahBySemester(@smt);

h. Memperlihatkan stored procedure untuk penambahan data di tabel


dosen
DELIMITER //
Create PROCEDURE AddDosen(
IN kode_dos VARCHAR(10),
IN Snama_dos VARCHAR(350),
IN alamat_dos VARCHAR(100)
)
BEGIN
INSERT INTO dosen VALUES(
Kode_dos,nama_dos,alamat_dos
);
END //

DELIMITER ;

3.2.2. Printscreen
a. Membuat procedure getMatakuliah semester 3

7
b. Menampilkan data pada semester 3

c. Membuat procedure dengan 2 variabel

d. Pemanggilan pada stored procedure

e. mendeklarasikan variabel bernama smt dan inisialisasi dengan


nilai 3.dan Memeriksa nilai variabel menggunakan SELECT

8
f. Memanfaatkan variable yang telah dideklarasikan sebagai
argumen stored procedure

g. Memperlihatkan stored procedure untuk penambahan data di tabel


dosen

h. Tampilan penambahan data

3.2.3. Keterangan
jika kia inin memnggil stored procedure yang memiliki parameter,
maka kita
harus menspesifikasikan argumennya. Misalkan kita ingin
mendapatkan

9
data matakuliah di semester 3. Apabila pemanggilan stored procedure
di atas mengabaikan argumen,
DBMS akan merespon dengan pesan kesalahan.
Bergantung kebutuhan, pendefinisian parameter pada stored procedure
juga
bisa diubah sesuai keinginan kita. selein kita dapat melihat data
mahasiswa dengan semester 3, kita juga dapat mengganti argumen
yang berada didalam kurung dengan semeser yang berada di dalam
tabel matakuliah.
jadi, intinya dalam stored procedure dengan parameter IN
memerlukan sebuah argumen didalamnya.
Bergantung kebutuhan, pendefinisian parameter pada stored procedure
juga
bisa lebih dari satu. dan untuk tipe data yang parameter IN nya lebih
dari satu, dalam penyeleksiannya kita juga harus memasukan kedua-
duanya
argumennya untuk dapat menyeleksi hasilnya. Jika tidak, program
akan melihat hal ini sebagai suatu kesalahan.
Di MySQL, kita juga bisa mendeklarasikan variabel global ruang
lingkup session dengan menggunakan perintah set dan notasi . sebagai
contoh, kita telah lihat seperti contoh langkah-langkah di atas,
perintah seperti
tadi akan mendeklarasikan variabel bernama smt dan diinisialisasi
dengan nilai 3. kita juga dapat memanfaatkan variable yang sudah kita
deklarasikan sebelumnya,
untuk operasi-operasi yang lain, sebagai contoh kita juga dapat
memasukan @ smt pada argumen yang terdapat di stored procedure
getMatakuliahBySemester.
Pada operasi penambahan, data-data terkait diisikan melalui argumen.
Selanjutnya, isi stored procedure tinggal memasukkan data ke tabel.
3.3. Latihan 3 (Parameter OUT)
3.3.1. Langkah – langkah
a. Tuliskan pernyataan SQL berikut untuk penggunaan OUT :

10
DELIMITER //
Create PROCEDURE JumlahDosen(
OUT Jumlah_dos INT(3),
)
BEGIN
SELECT COUNT (Kode_dos)
INTO jumlah_dos
FROM dosen
END //

DELIMITER ;

b. Mengeksekusi stored procedure dengan parameter out, dengan


menspesifikasikan argumennya.

CALL jumlahDosen(@jumlah_dos);

c. mendapatkan nilai variabel dengan menggunakan select

SELECT @jumlah_dos;

3.3.2. Printscreen
a. Menuliskan pertnyataan penggunaan OUT

b. Mengeksekusi stored procedure dengan menspesifikasikan


argumaennya (@), kemudian menggunakan variabel SELECT

11
3.3.3. Keterangan
Dalam konteks bahasa pemrograman, parameter analog dengan
passing-by-reference. Dengan demikian, parameter ini nilainya bisa
diubah oleh stored procedure. Untuk mengeksekusi stored procedure dengan parameter ,
out kita harus
menspesifikasikan argumennya dengan benar. Perhatikan, argumen harus menggunakan
notasi , yang mengindikasikan
sebagai suatu parameter out.
Langkah selanjutnya, untuk mendapatkan nilai variabel, gunakan
pernyataan select.

3.4. Latihan 4 (PARAMETER IN OUT)


3.4.1. Langkah – langkah
a. Membuat pernyataan INOUT dalam perintah SQL

DELIMITER //
Create PROCEDURE CountBySks(
INOUT var INT(3),
)
BEGIN
SELECT COUNT (Kode_mk)
INTO var
FROM matakuliah
WHERE sks=var;
END //

DELIMITER ;

b. Memprsentasikan IN OUT dalam bentuk IN dan OUT

DELIMITER //
Create PROCEDURE CountByGender(
IN gender INT(3),
OUT total INT(3)
)
BEGIN
SELECT COUNT (nim)
INTO total
12
FROM mahasiswa
WHERE jenis_kelamin=gender;
END //

DELIMITER ;
3.4.2. Printscreen
a. Membuat procedure stored dengan INOUT

b. Menspesifikasikan perintah SQL dengan menggunakan @, dan


menampilkan menggunakan SELECT

c. Mempresentasikan INOUT dalam bentuk IN dan OUT

13
3.4.3. Keterangan
Dalam penulisan parameter INOUT ini, kita dapat mengirimkan
parameter ke stored procedure dan mendapatkan nilai kembalian yang
baru sebgai hasi kita.jangan lupa di awal penulisan syntax kita harus
menulis DELIMITIER //. Contoh penggunaan paremeter INOUT ini
adalah misalnya kita ingin membuat / mendapatkan jumlah dari
mahasiswa yang jenis kelaminnya L. Dan pada program diatas yang
pertama, kita diminta untuk memasukan gender dalam bentuk varchar,
dan mengeluarkan total. Dan akan menyeleksi / mendapatkan jumlah
dari nim dari total yang diambil dari mahasiswa yang gendernya yang
akan diseleksi sama dengan jenis_kelamin yang ada pada tabel
mahasiswa.

14
3.5. Latihan 5 (PENCABANGAN dan PENGULANGAN)
3.5.1. Langkah – langkah
a. Membuat pernyataan SQL dengan pernyataan IF
DELIMITER //
Create PROCEDURE DemoIF(
IN var INT(3),
)
BEGIN
DECLARE str VARCHAR(50)
IF(bil<0) THEN
SET str=’Bilangan Negatif’;
ELSE
SET str=’Bilangan Positif’;
END IF ;
SELECT str;
END //

DELIMITER ;

b. Penggunaan IF

CALL DemoIF(7);
c. Menggunakan Looping

DELIMITER //
Create PROCEDURE DemoLoop(
IN bil INT(3),
)
BEGIN
DECLARE str VARCHAR(200)
DECLARE i INT(3)
SET i=1;
SET str=’ ‘;
WHILE i<= bil DO CONCAT
SET str= CONCAT(str, i,’,’);
SET i=i+1;
END WHILE ;
END //

DELIMITER ;

d. Penggunaan Looping

CALL DemoLoop(9);

15
3.5.2. Printscreen
a. Membuat pernyataan SQL dengan pernyataan IF

b. Menggunakan IF

16
c. Membuat pernyataan Looping.

d. Menampilkan Looping

3.5.3. Keterangan
Untuk table dari percabangan dan perulangan enggunaanya sendiri
kita bisa menghasilkan suatu prosedu yang sangat kompleks, dan
contoh biilangan yang mewakili percabangan dan perulangan adalah
kata IF.
Pertama kita akan membuat data procedurenya, kta membuat dengan
nama Demoif dengan masukan bil =3, dan sekarang kita
mendeklarasikan variabelnya, pertama str dengan varchar 50.

17
Sekarang kita akan memasukan fungsi if. Yang dimana kita akan
mencari yang mana bilangan positif, dan yang mana bilangan negatif.
Fungsi ifnya adalah jika bil < 0 maka bilangan itu adalah bilangan
negatif dan selain dari pada itu adlah bilangan positif.
Untuk permasalahan yang kedua, di dalam contoh yang kedua, kita
diminta untuk mengurutkan data.yangpertama yang akan kita lakukan
adalah membuat procedurnya terlebih dahulu. Kita beri nama
DemoLoop. Dan fungsi perulangan yang kita masukan disini adalah
fungsi WHILE, dan pernyataan yang kita masukan disini adalah, jika
bilangan yang kita masukan dalam argumen <= i maka progran yang
akan berjalan adalah pengurutan data dari i sampai kepada argumen
yang kita masukan tadi, yang dimana i tadi adalah 1.

4. Tugas Praktikum
4.1. Tugas Praktikum 1
4.1.1. Langkah-langkah
a. Mendefenisikan stored procedure untuk mendapatkan jumlah
mahasiswa yang diajar oleh dosen dengna kode dosen sesuai
dengan parameter yang dimasukkan (parameter IN). Jika tidak
ada mahasiswa yang diajar, maka akan menampilkan angka 0
(bukan null), sehingga seperti tampilan berikut.

CREATE PROCEDURE GetCountMhs(In kd_dosen


INT (3))
BEGIN
DECLARE jumlah INT (3);
SET jumlah=0;
SELECT COUNT(a.nim)
INTO jumlah
FROM ambil_mk ambil_mk a
WHERE a.kode_mk IN(
SELECT m.kode_mk FROM matakuliah m)
WHERE m.kode_dos=kd_dosen);
SELECT jumlah;
END //

18
b. Melakukan pemanggilan untuk mahasiswa yang diajar

CALL GetCountMhs(‘11’);

c. Melakukan pemanggilan untuk mahasiswa yang tidak diajar

CALL GetCountMhs(‘14’);

4.1.2. Printscreen
a. Membuat store procedure Mendefenisikan stored procedure untuk
mendapatkan jumlah mahasiswa yang diajar oleh dosen dengna
kode dosen sesuai dengan parameter yang dimasukkan (parameter
IN). Jika tidak ada mahasiswa yang diajar, maka akan
menampilkan angka 0 (bukan null), sehingga seperti tampilan
berikut.

b. Menampilkan mahasiswa yang termasuk diajar dosen

c. Menampilkan mahasiswa yang tidak termasuk diajar dosen

19
4.1.3. Analisis
Dalam membuat prodecure di tugas praktikum ini
kita memberi nama CREATE PROCEDURE GetCountMhs(In
kd_dosen INT (3))
dan memulai dengan mendeklarasikan jumlah INT (3) dengan SET
jumah = 0
setelah itu, menyeleksi COUNT (a.nim) INTO jumlah dari ambil_mk
dimana a.kode_mk. dan lagi setelah itu kita memasukan parameter IN
dengan syntak (
SELECT m.kode_mk FROM matakuliah m)
WHERE m.kode_dos=kd_dosen);
SELECT jumlah;
setelah kita menyelesaikan syntax untuk PROCEDURE
GetCountMhs, kita akan memanggil
panggilan untuk mahasiswa yang di ajar. kita akan menggunakan
syntax CALL GetCountMhs
dengan penulisan : CALL GetCountMhs(‘11’);. dan yang tidak diajar
dengan Syntax :
CALL GetCountMhs(‘14’);.
Dan kita telah melihat jumlah mahasiswa yang di ajar, ada 1
mahasiswa yang termasuk yang diajar dosen, dan 0 mahasiswa yang
tidak diajar oleh dosen.

4.2. Tugas Praktikum 2


4.2.1. Langkah-langkah

20
a. Mendefinisikan stored procedure untuk penambahan data
ambil_mk. Skenarionya, penambahan dapat dilakukan jika dan
hanya jika nilai nim eksis di tabel mahasiswa dan nilai kode_mk
eksis di tabel matakuliah. Apabila operasi berhasil, kembalikan
status OK ; sebaliknya jika gagal, kembalikan pesan Operasi
Gagal .
DELIMITER //
CREATE PROCEDURE InsertAmbilMk(IN nim_mhs INT(3),IN
kd_matkul char(12))
BEGIN
DECLARE status VARCHAR(15);
SET status="";
IF EXISTS(
SELECT*FROM mahasiswa
WHERE nim=nim_mhs)THEN
INSERT INTO ambil_mk
VALUES (nim_mhs,kd_matkul);
SET status="OK";
ELSE
SET status ="Operasi Gagal";
END IF;
SELECT status;
END//

b. Menampilkan kode_mk dengan nim eksist pada tabel

CALL insertAmbilMK(‘102’,PTI999’);//

c. Menampilkan kode_mk dengan nim tidak eksist pada tabel

CALL insertAmbilMK(‘102’,PT999’);//

4.2.2. Printscreen
a. Mendefinisikan stored procedure untuk penambahan data
ambil_mk. Skenarionya, penambahan dapat dilakukan jika dan
hanya jika nilai nim eksis di tabel mahasiswa dan nilai kode_mk
eksis di tabel matakuliah. Apabila operasi berhasil, kembalikan
status OK ; sebaliknya jika gagal, kembalikan pesan Operasi
Gagal .
b. Menampilkan kode_mk dengan nim eksist pada tabel

21
c. Menampilkan kode_mk dengan nim eksist pada tabel

4.2.3. Analisis
Pada awalnya kita diminta membuat PROCEDURE baru dengan nama InsertAmbilMk dengan
parameter IN nim_mhs bertipe data INT yang memiliki panjang maksimal 3, IN kd_matkul
bertipe data char dengan panjang maksimal 12 karakter. Kemudian deklarasikan variabel
status bertipe data VARCHAR yang memiliki panjang maksimal 15 string. Lalu SET nilai variabel
status menjadi “ ”. Lalu dilanjutkan dengan percabangan yang menggunakan IF EXISTS, jika
data pada tabel mahasiswa dengan syarat nim=nim_mhs maka lakukan penambahan data
dengan menggunakan INSERT pada tabel ambil_mk dengan VALUES (nim_mhs, kd_matkul)
dan SET status =”OK” . jika kondisi salah maka SET nilai variabel status = “Operasi Gagal”,
akhiri percabangan dengan END IF. Lakukan seleksi pada variabel status. Selanjutnya panggil
procedure yang kita buat dengan parameter (100, ‘PTI999’), kemudian panggil kembali
dengan parameter (104,’TIK324’) maka akan menghasilkan keluaran seperti gambar.

4.3. Tugas Praktikum 3


4.3.1. Langkah-langkah
a. Mendefinisikan stored procedure untuk memodifikasi data dosen
apabila eksis dan melakukan penambahan jika belum eksis. Jadi,
masukan dari argumen dapat digunakan untuk penambahan
ataupun modifikasi data.

22
b. Memodifikasi kode_dos 10 menjadi nama fatmawati dan alamat
Jl.jakarta

CALL datdos(10, “Fatmawati”, “Jl.Jakarta”);//

a. Menambahkan kode_dos 213 dengan nama wawan dan alamat


Jl.Araya
c.CALL datdos(213, “Wawan”, “Jl.Araya”);//

4.3.2. Printscreen
a. Mendefinisikan stored procedure untuk memodifikasi data
dosen apabila eksis dan melakukan penambahan jika belum
eksis. Jadi, masukan dari argumen dapat digunakan untuk
penambahan ataupun modifikasi data.

23
b. Memodifikasi kode_dos 10 menjadi nama fatmawati dan alamat
Jl.jakarta

c. menambahkan kode_dos 213 dengan nama wawan dan alamat


Jl.Araya

d. Data sebelum dimodifikasi

e. Data setelah dimodifikasi

24
4.3.3. Analisis
Pertama kita akan mendefinisikan stored procedure untuk
memodifikasi data dosen apabila eksis dan melakukan
penambahan jika belum eksis. Jadi, masukan dari argumen dapat
digunakan untuk penambahan ataupun modifikasi data
dan untuk procedurnya, kita akan menggunakan PROCEDURE
IF EXISTS. Dimana kode_dos=kode. setelah itu kita mengupdate
dosen dengan set alamat_dos=alamat
yang dimana kode=kode_dos, update dosen set nama_dos=nama
yang dimanakode=kode_dos, mengupdate dosen set
kode_dos=kode, yang dimana kode=kode_dos
dan yang bukan dari itu akan menyeleksi values kode, nama,
alamat. dan setelah itu mengakhiri fungsi IF

5. Tugas Rumah
5.1. Tugas Rumah 1
5.1.1. Langkah-langkah
a. Membuat tabel kategori pembayaran, transaksi pembayaran
dan mengisi tabel keduanya
tabel kategori_pembayaran
CREATE TABLE kategori_pembayaran_jamal(
id_kat VARCHAR(5),
nama_kat VARCHAR(30)
nominal DOUBLE,
PRIMARY kEY(id_kat)
);
25
Tabel transaksi pembayaran

CREATE TABLE transaksi_pembayaran_jamal(


nim VARCHAR(12),
id_kat VARCHAR(5),
waktu date);

Isi tabel kategori pembayaran

INSERT INTO kategori_pembayaran_jamal


VALUES('1','Pembayaran KPL',200000),
('2','Pembayaran Yudisium',500000),
('3','Pembayaran Wisuda',400000);

Isi tabel transaksi pembayaran

INSERT INTO transaksi_pembayaran_jamal


VALUES('102','3','2016-01-09'),
('101','2','2016-01-29'),
('104','1','2016-03-09'),
('104','2','2016-01-09'),
('105','2','2016-01-11'),
('105','3','2016-02-01'),
('105','1','2016-01-19'),
('107','1','2016-02-17'),
('107','3','2016-02-17');

b. Membuat Stored Procedure untuk mendapatkan total nominal


dari pembayaran setiap jenis kategori selama 1 bulan! Bulan
pembayaran ditentukan melalui parameter saat procedure
dipanggil

DELIMITER //
CREATE PROCEDURE Totalperkategori( IN bulan
INT(2))
BEGIN

SELECT k.nama_kat, SUM(k.nominal)


AS Total FROM kategori_pembayaran_jamal k,
transaksi_pembayaran_jamal t WHERE
k.id_kat=t.id_kat AND MONTH(waktu)=bulan
GROUP BY k.id_kat;
END // 26
c. Menapilkan kategori(2);

CALL Totalperkategori(2);

d. Menapilkan kategori(1);

CALL Totalperkategori(1);

e. Menapilkan kategori(3);

CALL Totalperkategori(3);

5.1.2. Printscreen
a. Membuat tabel kategori pembayaran dan transaksi pembayaran
sekaligus memasukkan data

27
b. Membuat Stored Procedure untuk mendapatkan total nominal dari
pembayaran setiap jenis kategori selama 1 bulan! Bulan
pembayaran ditentukan melalui parameter saat procedure
dipanggil

c. Menampilkan totalperkategori(1)

28
d. Menampilkan totalperkategori(2)

e. Menampilkan TotalPerkategori(3)

5.1.3. Analisis
Pertama kita akan membuat tabel kategori_pembayaran_jamal dengan
isi tabel id_kat, nama_kat, nominal, dan id_kat sebagai primary key.
setelah itu kita membuat tabel transaksi_pembayaran_jamal dengan isi
tabel
nim, id_kat, dan juga date sebagai fungsi tanggal.
setelah membuat tabel yang diperlukan, kita akan membuat fungsi
PROCEDURE
Totalperkategori. yang dimana dari PROCEDURE itu untuk
mendapatkan total nominal dari pembayaran setiap
jenis kategori selama 1 bulan! Bulan pembayaran ditentukan melalui
parameter saat
procedure dipanggil.Dengan syntax
SELECT k.nama_kat, SUM(k.nominal)
AS Total FROM kategori_pembayaran_jamal k,
transaksi_pembayaran_jamal t WHERE
k.id_kat=t.id_kat AND MONTH(waktu)=bulan
GROUP BY k.id_kat;
dan untuk pemanggilan fungsi itu kita menggunakan
CALL Totalperkategori(2), untuk mendapatkan jumlah nominal pada
bulan 2.

29
CALL Totalperkategori(3), untuk mendapatkan jumlah nominal pada
bulan 3.
dan CALL Totalperkategori(1), untuk mendapatkan jumlah nominal
pada bulan 1.
dikarenakan bulan yang kami inputkan sampai bulan tiga, maka jika
kita memasukan lebih dari itu maka
akan NULL.

5.2. Tugas Rumah 2


5.2.1. Langkah-langkah
a. Membuat Stored Procedure untuk memeriksa tunggakan yang
dimiliki mahasiswa. Jika mahasiswa memiliki tunggakan maka
akan menampilkan data kategori pembayaran yang belum
dibayarkan, jika mahasiswa sudah membayar semua jenis kategori
pembayaran maka akan menampilkan pesan bahwa mahasiswa
tersebut tidak memiliki tunggakan.

DELIMITER //
CREATE PROCEDURE CekTunggakan( IN
nmr VARCHAR(12))
BEGIN
IF (SELECT COUNT(*) FROM
transaksi_pembayaran_jamal
WHERE nim=nmr)<3 THEN
SELECT *FROM
kategori_pembayaran_jamal
WHERE id_kat NOT IN
(SELECT id_kat
FROM
transaksi_pembayaran_jamal WHERE
nim=nmr);
ELSE
SELECT "TIDAK ADA
TUNGGAKAN" AS pesan;
END IF;
END //

b. Mengeksekusi prosedure CALL cek tunggakan(‘102’)

CALL CekTunggakan(‘102’);

30
c. Mengeksekusi prosedure CALL cek tunggakan(‘105’)

CALL CekTunggakan(‘105’);

5.2.2. Printscreen
a. Membuat Stored Procedure untuk memeriksa tunggakan yang
dimiliki mahasiswa. Jika mahasiswa memiliki tunggakan maka
akan menampilkan data kategori pembayaran yang belum
dibayarkan, jika mahasiswa sudah membayar semua jenis kategori
pembayaran maka akan menampilkan pesan bahwa mahasiswa
tersebut tidak memiliki tunggakan.

b. Mengeksekusi prosedure CALL cek tunggakan(‘102’)

c. Mengeksekusi prosedure CALL cek tunggakan(‘102’)

5.2.3. Analisis
Disini kita akan membuat Stored Procedure untuk memeriksa
tunggakan yang dimiliki mahasiswa. Jika mahasiswa memiliki

31
tunggakan maka akan menampilkan data kategori pembayaran
yang belum dibayarkan, jika mahasiswa sudah membayar semua
jenis kategori pembayaran maka akan menampilkan pesan bahwa
mahasiswa tersebut tidak memiliki tunggakan. Dengan kita akan
memasukan syntax PROCEDUREcektunggakan dengan argumen
IN nmr VARCHAR(12))
untuk memulai program kita akan menggunakan fungsi IF dengan
menyeleksi
semua data dari transaksi_pembayaran_jamal dimana id_kat not
IN (SELECT id_kat
FROM transaksi_pembayaran_jamal WHERE
nim=nmr)
dan jika tidak memenuhi data yang dimaksudkan maka akan
beralih kemada pengeluaran
select "TIDAK ADA TINGGAKAN". setelah itu fungsi iF
berakhir.
untuk mengeksekusi PROCEDURE cektunggakan 102, kita akan
menggunakan syntax CALL CekTunggakan(‘102’).
untuk mengeksekusi PROCEDURE cektunggakan 105, kita akan
menggunakan syntax CALL CekTunggakan(‘105’).
Kesimpulan
 Disini Stored Procedure adalah sebuah prosedur layaknya subprogram (subrutin) di
dalam bahasa pemrograman reguler yang tersimpan di dalam katalog basis data.
 Yang adalah kelebihan dari stored procedure antara lain :
 Meningkatkan performa
 Mereduksi trafik jaringan
 Reusable
 Meningkatkan kontrol sekuriti
 Ternyata Stored procedure juga memiliki kekurangan, diantaranya : berpotensi
meningkatkan beban server dan penulisannya tidak mudah (memerlukan pengetahuan
spesifik).
 Stored procedure memilki 3 parameter, antara lain :
 IN
 OUT
 INOUT

32
 Paramater IN merupakan mode default , hal ini mengindikasikan bahwa sebuah
parameter dapat di-pass ke stored procedure tetapi nilainya tidak dapat diubah (dari
dalam stored procedure).
 Parameter OUT merupakan mode dimana mode ini mengindikasikan bahwa stored
procedure dapat mengubah parameter dan mengirimkan kembali ke program
pemanggil
 Parameter INOUT merupakan mode, dimana mode ini dasarnya merupakan kombinasi
dari mode IN dan mode OUT.

6. Daftar Pustaka
6.1. Tim Asisten Dosen. 2016. Modul 4 Join dan Union. Malang : Universitas Negeri
Malang.
6.2. Kadir, Abdul. 2008. Belajar Database Menggunakan MySQL. Yogyakarta :
ANDI.

33

Anda mungkin juga menyukai