Title | LAPORAN BASIS DATA MODUL 7 STORED PROCEDURE |
---|---|
Author | A. Adyana Firdaus |
Pages | 37 |
File Size | 2.8 MB |
File Type | |
Total Downloads | 273 |
Total Views | 518 |
LAPORAN MODUL VII PRAKTIKUM BASIS DATA “ STORED PROCEDURE” Disusun untuk Memenuhi Matakuliah Praktikum Basis Data Dibimbing oleh Triyanna Widyaningtyas, S.T., M.T. Oleh: Aisya Rawdha 170533628608 Ari Candra A. F. 170533628623 S1 PTI ‘17 OFF A UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ...
Accelerat ing t he world's research.
LAPORAN BASIS DATA MODUL 7 STORED PROCEDURE Ari Candra Adyana Firdaus
Related papers
Download a PDF Pack of t he best relat ed papers
LAPORAN PRAKT IKUM 7 BASIS DATA-ST ORED PROCEDURE dwit ha fajri
Laporan Basis Dat a Modul 7 Sept ian Adi Prat ama
LAPORAN MODUL VII PRAKTIKUM BASIS DATA “ STORED PROCEDURE”
Disusun untuk Memenuhi Matakuliah Praktikum Basis Data Dibimbing oleh Triyanna Widyaningtyas, S.T., M.T.
Oleh: Aisya Rawdha Ari Candra A. F.
170533628608 170533628623
S1 PTI ‘17 OFF A
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA Maret 2018
I.
Tujuan Praktikum • Memahami
konsep
dasar
stored
procedure,
kelebihan
dan
kekuranganya. • Memahami implementasi stored procedure di dalam basis data. • Mampu menyelesaikan operasi – operasi data spesifik dengan memanfaatkan stored procedure
II.
Dasar Teori
1. Stored Procedure Stored Procedure adalah sebuah prosedur layaknya subprogram (subrutin) di dalam bahasa pemrograman reguler yang tersimpan di dalam katalog basis data. Beberapa kelebihan yang ditawarkan stored procedure antara lain : mengingkatakan performa, mereduksi trafik jaringan, reusable, dan meningkatkan kontrol sekuriti. Di balik kelebihan tersebut, stored procedure juga memiliki kekurangan. Di antaranya adalah berpotensi meningkatkan beban server dan penulisnaya tidak mudah (memerlukan pengetahuan yang spesifik). Contoh sintaks stored procedure :
Untuk memanggil sotred preocedure, digunakan perintah CALL (beberapa DBMS ada yang menggunakan EXECUTE).
Dalam Implementasinya, penggunaan stored procedure sering melibatkan parameter. Di MySQL, parameter stored procedure dibedakan menjadi tiga mode : IN, OUT, dan INOUT.
A. IN Parameter yang merupakan mode default ini mengindikasikan bahwa sebuah parameter dapat di-pass ke dalam stored procedure tetapi nilainya tidak dapat diubah (dari dalam stored procedure) B. OUT Mode ini mengindikasikan bahwa stored procedure dapat mengubah parameter dan mengirimkan kembali ke program pemanggil C. INOUT Mode ini pada dasarnya merupakan kombinasi dari mode IN dan OUT. Sintaks pendefinisan parameter diperlihatkan sebagai berikut :
Stored procedure dapat mencerminkan beragam operasi data, misalnya seleksi, penambahan, pengubahan, penghapusan, dan juga operasi – oprasi DDL. Seperti halnya procedure di dalam bahasa pemrograman, stored procedure juga dapat melibatkan variabel, pernyataan kondisional, dan pengulangan.
III.
Latihan 1. Stored Procedure Seperti
halnya
tabel,
stored
procedure
diciptakan
dengan
menggunakan perintah CREATE sebagai contoh, buat stored procedure
getMahasiswa()
untuk
menampilkan
semua
mahasiswa. 1. Ketikkan pernyataan pembuatan stored procedure berikut :
data
Perintah DELIMITER digunakan untuk mengubah delimiter standar, misalnya di sini dari titik koma (;) menjadi slash ganda (//). Langkah ini umumnya dilakukan ketika isi stored procedure mengandung titik komayang merupakan delimiter standar di SQL. Pernyataan di antara BEGIN dan END merupakan badan (body) stored procedure. Perintah DELIMITER di akhir baris digunakan untuk mengembalikan delimiter ke karakter semula.
2. Eksekusi Query tersebut dengan memanggil procedure getMahasiswa().
2. Parameter IN Stored procedure di contoh sebelumnya memperlihatkan bentuk default (tanpa parameter). Di sini kita juga bisa mendefinisikan parameter yang nantinya dapat digunakan olehh pernyataan di body stored procedure. Sebagai contoh, kita bisa mendapatkan semua data matakuliah di semester tertentu.
Untuk memanggil stored procedure yang memiliki parameter, maka kita harus menspesifikasikan argumenya. Misalkan kita ingin mendapatkan 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 lebih dari satu. Sebagai contoh, buat stored procedure dengan dua buah parameter seperti berikut :
Pemanggilan stored procedure di atas tentunya akan memerlukan dua buah argumen.
Variabel Di MySQL, kita juga bisa mendeklarasikan variabel global – ruang lingkup session dengan menggunakan perintah SET dan notasi @. Sebagai contoh, perintah berikut akan mendeklarasikan variabel bernama smt dan diinisialisasi dengan nilai 3. Dan untuk memeriksa nilai variabel, gunakan perintah select
Langkah selanjutnya, kita bisa memanfaatkan variabel yang telah dideklarasikan untuk operasi – operasi lain, misalnya sebagai argumen stored procedure. CALL getMHSBySemester(@smt);
Penambahan Data Pada operasi penambahan, data – data terkait diisikan melaui argumen. Selanjutnya, isi stored procedure akan memasukkan data ke dalam tabel. Berikut adalah contoh stored procedure untuk menambahkan data pada tabel dosen
Lakukan eksekusi terhadap procedure tersebut call AddDosen('212','Gunawan','Jl. Ambarawa');
Selanjutnya lakukan pengecekan data pada tabel dosen. select * from dosen;
Operasi – operasi manipulasi data lainya bisa anda coba sendiri, dan tidak jauh berbeda dengan pernyataan SQL reguler
3. Parameter OUT Dalam konteks bahasa pemrograman, parameter OUT analog dengan passing-by-reference. Dengan demikian, parameter ini nilainya bisa diubah oleh stored procedure.
Untuk mengeksekusi stored procedure dengan parameter OUT, dibutuhkan argumen yang spesifik. Perhatikan,
argumen
harus
menggunakan
notasi
@,
yang
mengindikasikan sebagai suatu parameter OUT. Langkah selanjutnya, untuk mendapatkan nilai variabel, gunakan pernyataan
4. Parameter INOUT Pada parameter dengan mode INOUT ini, kita bisa mengirimkan parameter kedalam stored procedure dan mendapatkan nilai kembalian yang baru dari stored procedure yang didefinisikan. Sebagai contoh, definisikan stored procedure seperti berikut :
Lakukan eksekusi pada procedure tersebut untuk mencari jumlah matakuliah yang memiliki sks = 2. Dengan mendeklarasikan variabel @sks
dengan
nilai
CountBySks(@sks);
2
terlebih
dahulu
set
@sks=2;.
call
Lakukan pengecekan pada variabel sks setelah
dilakukan eksekusi pada stored procedure tersebut.select @sks;
Pendekatan INOUT juga dapat direpresentasikan dengan memisah parameter IN dan OUT Contoh penggunaanya, misal untuk mendapatkan jumlah mahasiswa yang jenis kelaminya adalah L.
Kemudian lakukan eksekusi pada procedure tersebut.
Maka akan didapat jumlah dari mahasiswa yang berjenis kelamin L adalah :
5. Pencabangan dan Pengulangan Penggunaan
pernyataan
–
pernyataan
percabangan
ataupun
pengulangan dapat dilakukan di dalam stored procedure.Sehingga dapat digunakan untuk menghasilkan suatu procedure yang lebih kompleks. Contoh berikut merupakan penggunaan dari pernyataan IF di dalam stored procedure.
Di dalam procedure tersebut membutuhkan beberapa variabel tambahan seperti str, sehingga di dekalrasikan variabel str dengan tipe varchar. Variabel ini digunakan sebagai keluaran dari procedure teresebut.
Kemudian eksekusi stored procedure tersebut dengan memberikan parameter bilangan berapapun. CALL DemoIF(7);
Contoh tersebut merupakan contoh untuk pernyataan kondisi didalam stored procedure. Dan berikut merupakan contoh penggunaan perulangan atau LOOPING pada stored procedure.
Lakukan eksekusi pada procedure tersebut. CALL DemoLOOP(9);
IV.
Tugas Praktikum 1. Definisikan stored procedure untuk meng-update data pada tabel mahasiswa! a. Source code : Procedure DELIMITER // CREATE PROCEDURE UpdateData(NimLama CHAR(15), Nama VARCHAR(30), JK ENUM('L','P'), Alamat VARCHAR(30)) BEGIN UPDATE mahasiswa SET Nama=Nama,Jk=JK, Alamat=Alamat WHERE Nim=Nimlama; END //
Eksekusi Procedure CALL UpdateData('102', gura')
b. Screenshoot
'Aisya',
'P',
'Jl.
sigura-
c. Analisis Program Perintah SQL di atas merupakan procedure untuk mengupdate data menggunakan stored procedure UpdateData CREATE PROCEDURE UpdateData
yang didalamnya terdapat field yaitu, Nimlama
bertipe data CHAR dengan panjang karakter 15, Nama yang bertipe data VARCHAR dengan panjang karakter 30, terdapat JK yang bertibe dapat ENUM hanya memilih l atau p, dan kemudian Alamat yang bertipe data VARCHAR panjangnya 30 karakter (NimLama CHAR(15), Nama VARCHAR(30), JK ENUM('L','P'), Alamat VARCHAR(30)).procedur
tersebut memulai dari mengedit
tabel mahasiswa BEGIN UPDATE mahasiswa yang diset dengan kondisi
SET
Nama=Nama,Jk=JK,
Alamat=Alamat
Dimana
ditunjukkan dengan Nim = Nimlama WHERE Nim = Nimlama; END //.
Kita melakukan eksekusi terhadap prosedure tersebut dengan
pemanggilan untuk update data kita bisa mengganti isi kolom atau record kolom CALL UpdateData('102', 'Aisya', 'P', 'Jl. sigura-gura')
dan data pada NIM 102 akan terupdate dengan
menggantikan record sebelumnya.
2. Definisikan stored procedure untuk mengetahui apakah nim sembarang mahasiswa sedang mengambil matakuliah atau tidak. Jika sedang mengambil, set status “ADA’, dan jika tidak mengambil, set status “TIDAK ADA”. a. Source code : Procedure DELIMITER // CREATE PROCEDURE getnimMk( IN nim INT(3) ) BEGIN DECLARE str VARCHAR(50); IF EXISTS (SELECT * FROM ambil_mk WHERE ambil_mk.nim = nim) THEN SET str = 'ADA'; ELSE SET str = 'TIDAK ADA'; END IF; SELECT nim,str AS status; END //
Eksekusi Procedure (mahasiswa mengambil matakuliah) CALL getnimMk(105)
Eksekusi Procedure (mahasiswa tidak mengambil matakuliah) CALL getnimMK(109)
b. Screenshoot
c. Analisis Program Pada SQL di atas merupakan procedure untuk mendapatkan nim mahasiswa dan dapat mengetahui mahasiswa mana
yang
mengambil matakuliah dan yang tidak mengambil. Di dalam procedure
tersebut
ada
perintah
untuk
PROCEDURE getnimMk(IN nim INT(3))
membuat
dengan NIM bertipe data
int dan panjang karakternya 3. . BEGIN VARCHAR(50);
CREATE
DECLARE
str
dan dimulai dari pendeklarasian variabel tambahan
yang bertipe data VARCHAR dengan panjang karakter 50. IF EXISTS (SELECT * FROM ambil_mk WHERE ambil_mk.nim =
nim)yang
diartikan bahwa terdapat kondisi IF EXISTS untuk
mengambil seluruh field dari tabel ambi_mk dimana memiliki kondisi. THEN SET str = 'ADA' ELSE SET str = 'TIDAK ADA';END IF; SELECT nim,str AS status;
SQL tersebut
arti dari perintas
pengesetan pada variabel str jika kondisi diatas
memenuhi, maka str akan keluar ADA, jika tidak memenuhi maka str akan keluar TIDAK ADA, str tersebut dikeluarkan sebagai field status. Untuk mengeksekusi procedure tersebut kita dapat menggunakan perintah CALL getnimMK(...) NIM mana yang mengambil matakuliah.
3. Definisikan stored procedure untuk menampilkan nilai genap saja, dengan inputan yang ditentukan! a. Source code : Procedure DELIMITER // CREATE PROCEDURE getnilaiGenap( IN nilai INT(3) ) BEGIN DECLARE str VARCHAR(20); IF (nilai%2 = 0) THEN SET str = 'GENAP'; END IF; SELECT nilai, str; END //
Eksekusi Procedure CALL getnilaiGenap(80)
b. Screenshoot
c. Analisis Program Pada SQL di atas merupakan procedure untuk mengetahui nilai genap pada sebuah data dengan penginputan nilai langsung yang ditentukan.
Membuat
getnilaiGenap
procedure
CREATE
PROCEDURE
dengan didalamnya terdapat field baru yaitu (IN
nilai INT(3))nilai
dengan tipe data INT agar dapat dioperasikan
dengan operasi matematika, panjang karakternya 3. BEGIN DECLARE
str
VARCHAR(20);IF
(nilai%2
=
0)melulai
procedure dengan pendeklarasian variabel baru yang bertipe data VARCHAR ddengan panjang karakter 20. Dengan kondisi Nilai %2=0
merupakan nilai tersebut tidak memiliki sisa jika dibagi 2,
nilainya merupakan nilai bulat,
THEN SET str = 'GENAP';
menget str sama dengan genap jika kondisi diatas terpenuhi END IF; SELECT nilai, str;
akan
terpenuhi
dengan memasukkan nilai genap maka
kondisinya.
Kemudian
setelah
melakukan
pembuatan procedure selesai, untuk mendapatkan nilai GENAP kita dapat melakukan perintah pemanggilan nilai genap dengan cara CALL getnilaiGenap(80) maka akan dikeluarkan outputan bahwa nilai 80 merupakan nilai GENAP.
V.
Tugas Rumah 1. Definisikan Store prosedure untuk menambahkan data pada tabel mahasiswa, jika data sudah ada, set status “Data Mahasiswa Sudah Terdaftar”. dan jika data belum ada, set status “Data Mahasiswa berhasil ditambahkan” dan langsung ditampilkan! a. Source code : Procedure DELIMITER // CREATE PROCEDURE getStatusMahasiswa( IN nim_mhs INT(3), IN nama_mhs VARCHAR(30), IN jenis_kelamin_mhs ENUM('L','P'), IN alamat_mhs VARCHAR(30) ) BEGIN DECLARE status_mhs VARCHAR(50); IF EXISTS(SELECT*FROM mahasiswa WHERE nim_mhs IN(SELECT m.Nim FROM mahasiswa m)) THEN SET status_mhs="Data Mahasiswa Sudah Terdaftar"; ELSE INSERT INTO mahasiswa VALUES( nim_mhs,nama_mhs,jenis_kelamin_mhs,alamat_mhs); SET status_mhs="Data Mahasiswa berhasil ditambahkan"; END IF; SELECT status_mhs; END //
Eksekusi procedure CALL getStatusMahasiswa("101", Kenangan");
"Arif",
"L",
"Jl.
CALL getStatusMahasiswa("311", Buntu");
b. Screenshot
"Ari",
"L",
"Jl.
c. Analisis program Pada program diatas menggunakan 1 query untuk membuat procedure dan 2 query untuk eksekusi procedure. CREATE PROCEDURE getStatusMahasiswa(
digunakan untuk membuat
procedure baru dengan nama getStatusMahasiswa yang berisikan IN nim_mhs INT(3), IN nama_mhs VARCHAR(30), IN jenis_kelamin_mhs ENUM('L','P'), IN alamat_mhs VARCHAR(30)
)
nim_mhs menggunakan tipe data integer
dengan panjang karakter 3, nama_mhs menggunakan tipe data varchar dengan panjang karakter 30, jenis_kelamin_mhs menggunakan tipe data enum dengan pilihan karakter L dan P, alamat_mhs menggunakan tipe data varchar dengan panjang karakter 30. Saat memulai procedure menggunakan BEGIN, program akan menjalankan perintah DECLARE status_mhs VARCHAR(50);
yaitu mendeklarasikan status_mhs dengan tipe
data varchar dan panjang karakter 50, jika data sudah ada sebelumnya maka program akan menjalankan perintah IF EXISTS(SELECT*FROM
mahasiswa
WHERE
IN(SELECT m.Nim FROM mahasiswa m))
nim_mhs
dan mengeluarkan
output bahwa data mahasiswa sudah terdaftar dengan perintah SET
status_mhs="Data
Mahasiswa
Sudah
Terdaftar";
namun jika data yang dimasukkan belum ada maka program akan
menjalankan
VALUES(
perintah
nim_mhs,
alamat_mhs);
INSERT
nama_mhs,
INTO
mahasiswa
jenis_kelamin_mhs,
yang berarti memasukkan data baru ke tabel
mahasiswa dengan values nim, nama, jenis kelamin, dan alamat kemudian mengeluarkan output data mahasiswa berhasil
ditambahkan
menggunakan
perintah
SET
status_mhs="Data Mahasiswa berhasil ditambahkan";. Saat eksekusi
procedure
menggunakan
perintah
CALL
getStatusMahasiswa Kenangan");,
("101",
"Arif",
"L",
"Jl.
output yang dikeluarkan adalah data mahasiswa
sudah terdaftar karena mahasiswa dengan status nim, nama, jenis
kelamin,
dan
alamat
tersebut
sudah
diinputkan
sebelumnya. Namun jika eksekusi procedure menggunakan perintah CALL getStatusMahasiswa ("311", "Ari", "L", "Jl. Buntu");,
maka output yang dikeluarkan adalah data
mahasiswa berhasil ditambahkan karena mahasiswa dengan status nim, nama, jenis kelamin, dan alamat tersebut belum diinputkan sebelumnya.
2. Definisikan suatu Stored procedure yang berfungsi untuk menambahkan data pada tabel penulis, detail_buku, dan buku. a. Source code : Procedure DELIMITER // CREATE PROCEDURE AddPenulis( IN id INT (4), IN nama VARCHAR (40) ) BEGIN INSERT INTO tabel_penulis (id_penulis, nama_penulis) VALUES (id,nama); END // DELIMITER // CREATE PROCEDURE AddStok( IN id INT(3), IN harga INT(6), IN stok INT(2) ) BEGIN INSERT INTO detail_buku (id_buku,harga,stok) VALUES (id,harga,stok); END // DELIMITER // CREATE PROCEDURE AddBuku( IN id_bk INT(3), IN id_pls INT(3)
IN nama_bk VARCHAR (20), IN genre VARCHAR (10), IN tahun YEAR (4) ) BEGIN INSERT INTO tabel_buku (id_buku,id_penulis,nama_buku,genre,tahun) VALUES (id_bk,id_pls,nama_bk,genre,tahun); END //
Eksekusi procedure CALL AddPenulis(125,'Candra Firdaus') SELECT * FROM tabel_penulis; CALL AddStok(212,120000,45) SELECT * FROM detail_buku; CALL AddBuku (212, 125, 2010) SELECT * FROM tabel_buku;
b. Screenshot
'Anak
Ayam',
'Action',
c. Analisis program : Program diatas menggunakan 3 query untuk membuat procedure dan 3 query untuk eksekusi procedure. Untuk membuat procedure daftar penulis menggunakan perintah CREATE PROCEDURE AddPenulis( (4), IN nama VARCHAR (40) )
yang berisi IN id INT
yaitu id penulis dengan tipe
data integer dan panjang karakter 4 serta nama penulis dengan tipe data varchar dan panjang karakter 40. Saat memulai procedure menggunakan BEGIN, perintah yang dijalankan adalah
INSERT
nama_penulis)
INTO
tabel_penulis
VALUES (id, nama);,
(id_penulis,
yaitu memasukkan
data baru ke tabel_penulis berupa id penulis dan nama penulis dengan values id dan nama. Untuk membuat procedure detail buku menggunakan perintah CREATE PROCEDURE AddStok( yang berisi IN id INT(3), IN harga INT(6), IN stok
INT(2) ),
yaitu id buku dengan tipe data integer dan panjang
karakter 3, harga buku dengan tipe data integer dan panjang karakter 6, serta stok buku dengan tipe data integer dan panjang karakter 2. Saat memulai procedure menggunakan BEGIN,
perintah yang dijalankan adalah INSERT
detail_buku
(id_buku,
stok);,
harga,
harga,
stok)
INTO
VALUES
(id,
yaitu memasukkan data baru ke tabel
detail_buku berupa id buku, h...