0% menganggap dokumen ini bermanfaat (0 suara)
92 tayangan19 halaman

Modul 7

Dokumen tersebut menjelaskan tentang cara membuat stored procedure dalam MySQL untuk melakukan berbagai operasi terhadap tabel, seperti menampilkan data, menambahkan data, memodifikasi data, dan melakukan operasi hitung dengan menggunakan parameter input, output, dan input output. Diuraikan pula penggunaan variabel dan kontrol aliran program seperti percabangan dan perulangan dalam stored procedure.

Diunggah oleh

part_ii_1
Hak Cipta
© Attribution Non-Commercial (BY-NC)
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)
92 tayangan19 halaman

Modul 7

Dokumen tersebut menjelaskan tentang cara membuat stored procedure dalam MySQL untuk melakukan berbagai operasi terhadap tabel, seperti menampilkan data, menambahkan data, memodifikasi data, dan melakukan operasi hitung dengan menggunakan parameter input, output, dan input output. Diuraikan pula penggunaan variabel dan kontrol aliran program seperti percabangan dan perulangan dalam stored procedure.

Diunggah oleh

part_ii_1
Hak Cipta
© Attribution Non-Commercial (BY-NC)
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/ 19

C.

JALANNYA PRAKTIKUM (PROSEDUR)


Dalam latihan ini digunakan kembali lima buah tabel—meliputi mahasiswa,
ambil_mk, matakuliah, dosen, dan jurusan yang telah dibuat sebelumnya.
a. Menciptakan tabel dengan struktur sebagai berikut:
(1) Tabel mahasiswa
CREATE TABLE mahasiswa(
nim INT(12) NOT NULL,
nama VARCHAR(60) NOT NULL,
jenis_kelamin CHAR(1) NOT NULL,
alamat VARCHAR(120),
PRIMARY KEY(nim)
);

(2) Tabel ambil_mk


CREATE TABLE ambil_mk(
nim INT(12),
kode_mk VARCHAR(7)
);

(3) Tabel matakuliah


CREATE TABLE matakuliah(
kode_mk VARCHAR(7),
nama_mk VARCHAR(30),
sks INT(2),
semester INT(2),
kode_dos INT(5),
PRIMARY KEY(kode_mk)
);

(4) Tabel dosen


CREATE TABLE dosen(
kode_dos int(5) NOT NULL,
nama_dos varchar(30) NOT NULL,
alamat_dos varchar(30) NOT NULL,
PRiMARY KEY(kode_dos)
)ENGINE=MyISAM;

(5) Tabel jurusan


CREATE TABLE jurusan(
kode_jur varchar(5) NOT NULL,
nama_jur varchar(30) NOT NULL,
kode_dos int(5) NOT NULL,
PRIMARY KEY(kode_jur)
)ENGINE=MyISAM;

Himpunan entitas di atas dapat direpresentasikan ke dalam diagram skema


(schema diagram) seperti gambar berikut:

b. Mengisi tabel yang telah dibuat sebelumnya dengan data sebagai berikut:
(1) Tabel mahasiswa
INSERT INTO mahasiswa (nim, nama, jenis_kelamin,
alamat)
VALUES (101, 'Arif', 'L', 'Jl. Kenangan'),
(102, 'Budi', 'L', 'Jl. Jombang'),
(103, 'Wati', 'P', 'Jl. Surabaya'),
(104, 'Ika', 'P', 'Jl. Jombang'),
(105, 'Tono', 'L', 'Jl. Jakarta'),
(106, 'Iwan', 'L', 'Jl. Bandung'),
(107, 'Sari', 'P', 'Jl. Malang');

(2) Tabel ambil_mk


INSERT INTO ambil_mk(nim, kode_mk)
VALUES(101, 'PTI447'),
(103, 'TIK333'),
(104, 'PTI333'),
(104, 'PTI777'),
(111, 'PTI123'),
(123, 'PTI999');
(3) Tabel matakuliah
INSERT INTO matakuliah
VALUES ('PTI447', 'Praktikum Basis Data', '1', '3',
11),
('TIK342', 'Praktikum Basis Data', '1', '3', 11),
('PTI333', 'Basis Data Terdistribusi', '3', '5', 10),
('TIK123', 'Jaringan Komputer', '2', '5', 33),
('TIK333', 'Sistem Operasi', '3', '5', 10),
('PTI123', 'Grafika Multimedia', '3', '5', 12),
('PTI777', 'Sistem Informasi', '2', '3', 99);

(4) Tabel dosen


INSERT INTO dosen(kode_dos, nama_dos, alamat_dos)
VALUES(10, 'Suharto', 'Jl. Jombang'),
(11, 'Martono', 'Jl. Kalpataru'),
(12, 'Rahmawati', 'Jl. Jakarta'),
(13, 'Bambang', 'Jl. Bandung'),
(14, 'Nurul', 'Jl. Raya Tidar');
(5) Tabel jurusan
INSERT INTO jurusan(kode_jur, nama_jur, kode_dos)
VALUES ('TE', 'Teknik Elektro', 10),
('TM', 'Teknik Mesin', 13),
('TS', 'Teknik Sipil', 23);

1. Stored Procedure
Membuat stored procedure getMahasiswa( ) untuk menampilkan semua data
mahasiswa.

DELIMITER //
CREATE PROCEDURE getMahasiswa()

BEGIN

/* Ini baris komentar */


SELECT * FROM mahasiswa;
END //

DELIMITER ;

Memanggil stored procedure getMahasiswa().

Untuk mendapatkan informasi mengenai status stored procedure, gunakan


perintah SHOW PROCEDURE STATUS.

Untuk mendapatkan informasi pembuatan stored procedure.


Untuk menghapus stored procedure, gunakan perintah DROP PROCEDURE.

2. Parameter IN

Mendapatkan semua data matakuliah di semester tertentu.


DELIMITER //

CREATE PROCEDURE getMhsBySemester(IN smt INT(2))

BEGIN
SELECT *
FROM matakuliah
WHERE semester = smt;

END //

DELIMITER ;

Untuk memanggil stored procedure yang memiliki parameter, maka kita harus
menspesifikasikan argumennya. Misalnya kita ingin mendapatkan data
matakuliah di semester 3.
Pendifinisian parameter pada stored procedure juga bisa lebih dari satu. Sebagai
contoh, buat stored procedure dengan dua buah parameter seperti berikut :

DELIMITER //

CREATE PROCEDURE getMhsBySemSks(IN smt INT(2), IN s


INT(2))

BEGIN

SELECT *
FROM matakuliah
WHERE semester = smt
AND sks = s;

END //

DELIMITER ;

Pemanggilan stored procedure di atas tentunya akan memerlukan dua buah


argumen.
Variabel

Mendeklarasikan variabel bernama smt dengan inisialisasi dengan nilai 3. Dan


untuk memeriksa variabel dengan menggunakan perintah SELECT.

Kita bisa memanfaatkan variabel yang – yang telah dideklarasikan – untuk


operasi-operasi lain, misalnya sebagai argumen stored procedure.

Penambahan data
Contoh berikut memperlihatkan stored procedure untuk penambahan data di
tabel jurusan.

DELIMITER //

CREATE PROCEDURE addJurusan(


IN kode VARCHAR(2),
IN nama VARCHAR(30),
IN dos INT(3)
)

BEGIN

INSERT INTO jurusan


VALUES (kode, nama, dos);

END //

DELIMITER ;

Eksekusi stored procedure penambahan data.

3. Parameter OUT
Dalam konteks bahasa pemrograman, parameter OUT analog dengan passing-
by-referance. Dengan demikian, parameter ini nilainya bisa diubah oleh stored
procedure.
DELIMITER //

CREATE PROCEDURE countMK(OUT total INT(2))

BEGIN

SELECT COUNT(kode_mk)

/* Hasil counting di-pass back ke variabel total */


INTO total
FROM matakuliah;

END //

DELIMITER ;

Menspesifikasikan argumen dengan notasi @, yang mengindikasikan sebagai


suatu parameter OUT. Langkah selanjutnya, untuk mendapatkan nilai variabel,
gunakan perintah SELECT.

4. Parameter INOUT

Pada parameter dengan model ini, kita bisa mengirimkan parameter ke stored
procedure dan mendapatkan nilai kembalian yang baru. Sebagai contoh, buat
stored procedure seperti berikut :
DELIMITER //

CREATE PROCEDURE countBySex(INOUT arg VARCHAR(5))

BEGIN

SELECT COUNT(nim)
INTO arg
FROM mahasiswa
WHERE jenis_kelamin = arg;

END //

DELIMITER ;

Untuk mendapatkan jumlah mahasiswa yang jenis kelaminnya L.

Pendekatan INOUT juga bisa direperesentasikan dalam bentuk IN dan


OUT secara terpisah.

DELIMITER //

CREATE PROCEDURE countBySex2(IN sx VARCHAR(1), OUT


total INT(5))

BEGIN

SELECT COUNT(nim)
INTO total
FROM mahasiswa
WHERE jenis_kelamin = sx;

END //

DELIMITER ;

Contoh penggunaannya :

5. Pencabangan dan Pengulangan


Contoh berikut memperlihatkan penggunaan pernyataan IF.
DELIMITER //

CREATE PROCEDURE demoIF(IN bil INT(3))

BEGIN

-- Deklarasi variabel di dalam stored procedure


DECLARE str VARCHAR(30);

IF (bil>0) THEN
SET str = 'Lebih dari Nol';
ELSE
SET str = 'Kurang dari / sama dengan Nol';
END IF;

-- Mencetak output ke layar


SELECT str;
END //

DELIMITER ;

Contoh penggunaannya :

Implementasi pernyataan perulangan diperlihatkan sebagai berikut :

DELIMITER //

CREATE PROCEDURE demoLoop(IN bil INT(3))

BEGIN

-- Deklarasi variabel
DECLARE x INT;
DECLARE str VARCHAR(50);

SET x = 1;
SET str = '';

WHILE x<=bil
DO

SET str = CONCAT(str, x, ', ');


-- inkremen
SET x = x+1;

END WHILE;

-- Mencetak output ke layar


SELECT str;

END //

DELIMITER ;

Contoh eksekusi stored procedure perulangan.

D. TUGAS PRAKTIKUM
1. Definisikan stored procedure untuk mendapatkan banyak matakuliah dan jumlah
total sks dengan menilbatkan dua buah parameter OUT.
Jawab :
DELIMITER //

CREATE PROCEDURE TgsPrak1(OUT jml INT(2), OUT total


INT(2))

BEGIN
SELECT COUNT(kode_mk), SUM(sks)
INTO jml, total
FROM matakuliah;

END //
DELIMITER ;

2. Definisikan sored procedure untuk penambahan data ambil_Mk. Skenarionya,


penambahan dapat dilakukan jika dan hanya jika nilai nim eksis di tabel
mahasiswa dan nilai kode_mk ekses di tabel matakuliah. Apabila operasi
berhasil, kembali status “OK”; SEBALIKNYA JIKA GAGAL,
KEMBALIKAN PESAN “Operasi Gagal”.
Jawab :
DELIMITER //

CREATE PROCEDURE TgsPrak2(IN nim1 int(12),


IN kode_mk1 VARCHAR(6))

BEGIN
-- Deklarasi variabel di dalam stored procedure
DECLARE str VARCHAR(30);
DECLARE arg1 INT(2);
DECLARE arg2 INT(2);
SELECT count(nim) INTO arg1 FROM mahasiswa WHERE
nim=nim1;
SELECT count(kode_mk) INTO arg2 FROM matakuliah WHERE
kode_mk = kode_mk1;
IF (arg1=0 OR arg2=0) THEN
SET str = "Operasi Gagal";
ELSE
BEGIN
SET str = "OK";
INSERT INTO Ambil_MK
VALUES(nim1, kode_mk1);

END;
END IF;
SELECT str;
END //

DELIMITER ;
3. Definisikan stored procedure untuk memodifikasi data dosen apabila eksis dan
melakukan penambahan jika belum eksis. Jadi, masukan dari argumen dapat
digunakan untuk penambahan ataupu modifikasi data.
Jawab :
DELIMITER //

CREATE PROCEDURE TgsPrak3(IN kode_dos1 int(5),


IN nama_dos1 VARCHAR(30), IN alamat_dos1 VARCHAR(30))

BEGIN
-- Deklarasi variabel di dalam stored procedure
DECLARE str VARCHAR(30);
DECLARE arg1 INT(2);

SELECT count(kode_dos) INTO arg1 FROM dosen WHERE


kode_dos=kode_dos1;

IF (arg1=0) THEN
BEGIN
SET str = "Entry Data";
INSERT INTO Dosen
VALUES(kode_dos1,nama_dos1,alamat_dos1);
END;
ELSE
BEGIN
SET str = "Modifikasi Data";
UPDATE dosen SET nama_dos = nama_dos1 WHERE
kode_dos=kode_dos1;
UPDATE dosen SET alamat_dos = alamat_dos1 WHERE
kode_dos=kode_dos1;
END;
END IF;
SELECT str;
END //

DELIMITER ;

Anda mungkin juga menyukai