III.5 Intro Stored Routine
Stored routine (function dan procedure) merupakan sekumpulan statement SQL yang dapat disimpan
dalam server. Setelah routine disimpan, client tidak perlu memanggil statement individual terus
menerus, namun cukup dengan memanggil stored routine.
1.     1.  Membuat function
mysql>DELIMITER //
mysql>CREATE FUNCTION full_name( in_first_name VARCHAR(15), in_last_name VARCHAR(15))
RETURNS VARCHAR(35)
BEGIN
RETURN CONCAT(in_first_name,' ',in_last_name);
END//

mysql>DELIMITER ;
mysql>SELECT full_name(first_name, last_name) FROM employee;

1.     2.  Melihat function yang telah dibuat kemudian menghapus functionnya



mysql>SHOW FUNCTION STATUS;
mysql>DROP FUNCTION full_name;
mysql>SHOW FUNCTION STATUS;

1.      3. Membuat procedure

mysql>DELIMITER //
mysql>CREATE PROCEDURE show_employees()
BEGIN
SELECT * FROM employee;
END //

mysql>DELIMITER ;
mysql>CALL show_employees();

1.      4. Parameter dalam procedure
1.    
Parameter IN

1


mysql>DELIMITER $$
mysql>CREATE PROCEDURE getEmployeeByCity (IN cityName VARCHAR(255))
BEGIN
SELECT * FROM employee WHERE city LIKE cityName;
END $$

mysql>DELIMITER ;
mysql>CALL getEmployeeByCity("Vancouver");

1.      5. Parameter OUT dan Parameter INOUT

 
mysql>DELIMITER :)
mysql>CREATE PROCEDURE getNumEmployee (OUT numEmployee INT)
BEGIN
SELECT COUNT(*) INTO numEmployee FROM employee;
END :)



1.      6. Melihat procedure yang telah dibuat kemudian menghapusnya

 
mysql>SHOW PROCEDURE STATUS;
mysql>DROP PROCEDURE increaseSalary;


Variabel


 
mysql>DELIMITER ^_^
mysql>CREATE FUNCTION addTax(salary FLOAT(8,2))
RETURNS FLOAT (8,2)
BEGIN
DECLARE tax FLOAT DEFAULT 0.05;
RETURN salary * (1 - tax);
END ^_^

mysql>DELIMITER ;
mysql>SELECT first_name, addTax(salary) FROM employee;




mysql>DELIMITER **
mysql>CREATE PROCEDURE checkScope()
BEGIN
DECLARE first_name VARCHAR(15) DEFAULT 'bob';
SELECT id, first_name FROM employee WHERE first_name = first_name;
END **

mysql>DELIMITER ;
mysql>CALL checkScope();


1.      8. Kendali Kondisional
 
If dan Else pada Trigger



mysql>DELIMITER &&
mysql>CREATE FUNCTION hideSalary(salary FLOAT(8,2))
RETURNS VARCHAR(20)
BEGIN
DECLARE sal VARCHAR(20);
IF salary < 4000 THEN SET sal = 'Low Salary';
ELSE SET sal = 'High Salary';
END IF;
RETURN sal;
END &&

mysql>DELIMITER ;
mysql>SELECT first_name, last_name, hideSalary(salary) FROM employee;


1.      9. Kendali CASE

mysql>DELIMITER >>
mysql>CREATE FUNCTION calcTax2(job VARCHAR(20))
RETURNS FLOAT(3,2)
BEGIN
DECLARE tax FLOAT(3,2);
CASE
WHEN job = 'Manager' THEN SET tax = 0.1;
WHEN job = 'Programmer' THEN SET tax = 0.07;
WHEN job = 'Tester' THEN SET tax = 0.06;
ELSE SET tax = 0.05;
END CASE;
RETURN tax;
END >>

mysql>DELIMITER ;
mysql>SELECT first_name, last_name, calcTax2(description) FROM employee;


1.      10. Perulangan
Perulangan WHILE

 
mysql>DELIMITER //
mysql>CREATE PROCEDURE mod12(IN number INT(10))
BEGIN
WHILE number MOD 12 > 0 DO
SET number = number + 1;
END WHILE;
SELECT number;
END //

mysql>DELIMITER ;
mysql>CALL mod12(10);
mysql>CALL mod12(24);


1.      11. Perulangan REPEAT … UNTIL

 
mysql>DELIMITER /.
mysql>CREATE PROCEDURE repeatDemo(IN number INT(10))
BEGIN
REPEAT
SET number = number +1;
UNTIL number MOD 12 = 0
END REPEAT;
SELECT number;
END /.

mysql>DELIMITER ;
mysql>CALL repeatDemo(10);


1.      12. Perulangan LOOP

 
mysql>DELIMITER /?
mysql>CREATE PROCEDURE iterateDemo(number INT)
BEGIN
label1: LOOP
SET number = number + 1;
IF number MOD 12 > 0 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SELECT number;
END /?

mysql>DELIMITER




mysql>CALL iterateDemo(10);
mysql>CALL iterateDemo(20);


BAB IV
PENUTUP
Daftar Pustaka

Sumber dari modul tugas ini adalah dari elearning ist-akprind Yogyakarta dengan source SMBD dan dengan modul 1 dan 2 MySQL








SMBD
20.32 | Author: Unknown


1. Tabel: user
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
user_name
VarChar
20
No
-
Primary Key
password
VarChar
20
No
-
-
level_user
Char
1
No
5
1 = admin; 2 = kepala sekolah; 3 = kepala perpustakaan
4 = anggota; 5 = pengunjung

2. Tabel: tanggal_libur
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
tanggal_libur
Date

no
-
Primary Key
Keterangan_libur
Varchar
50
no
-
-

3. Tabel: tarif_denda
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
jumlah_hari_maksimal
Num
3
No
-
Primary Key
jumlah_denda
Num
7
No
-
-

4. Tabel: tarif _hilang
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
harga_maksimal
Num
7
No
-
Primary Key
jumlah_denda
Num
7
No
-
-

5. Tabel: tarif _rusak
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
harga_maksimal
Num
7
No
-
Primary Key
jumlah_denda
Num
7
No
-
-

6. Tabel: anggota
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_anggota
Char
6
no
-
Primary Key
nama_anggota
VarChar
100
no
-
-
alamat
VarChar
100
no
-
-
kode_kecamatan
Char
6
no
-
Foreign Key
telepon
VarChar
12
yes
-
-
email
VarChar
20
yes
-
-
tgl_mulai_anggota
Date

no
-
-
jenis_anggota
Char
1
no
2
1 = guru/ karyawan; 2 = siswa
status_anggota
Char
1
no
2
1 = aktif; 2 = tidak aktif

7. Tabel: jenis
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_jenis_buku
Char
4
No
-
Primary Key
nama_jenis_buku
VarChar
20
No
-
-

8. Tabel: bidang
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_bidang
Char
4
No
-
Primary Key
nama_bidang
VarChar
20
No
-
-








9. Tabel: penerbit
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_penerbit
Char
4
No
-
Primary Key
nama_penerbit
VarChar
30
No
-
-
alamat
VarChar
100
no
-
-
kode_kecamatan
Char
6
no
-
Foreign Key
telepon
VarChar
12
yes
-
-
email
VarChar
20
yes
-
-

10. Tabel: penulis
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_penulis
Char
4
No
-
Primary Key
nama_penulis
VarChar
100
No
-
-
alamat
VarChar
100
no
-
-
kode_kecamatan
Char
6
no
-
Foreign Key
telepon
VarChar
12
yes
-
-
email
VarChar
20
yes
-
-


11. Tabel: propinsi
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_propinsi
Char
2
No
-
Primary Key
nama_propinsi
VarChar
30
No
-
-

12. Tabel: kabupaten
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_kabupaten
Char
4
No
-
Primary Key
nama_kabupaten
VarChar
30
No
-
-
kode_propinsi
Char
2
No
-
Foreign Key

13. Tabel: kecamatan
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_kecamatan
Char
6
No
-
Primary Key
nama_kecamatan
VarChar
30
No
-
-
kode_kabupaten
Char
4
No
-
Foreign Key

14. Tabel: pinjam
Catatan: kode_pinjam boleh tidak digunakan
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_pinjam




Primary Key
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
kode_buku
Char
10
No
-
Primary Key / Foreign Key
tanggal_pinjam
Date

No

Primary Key / Foreign Key
tanggal_harus_kembali
Date

N0
-
-

15. Tabel: kembali
Catatan:
  • kode_kembaliboleh tidak digunakan
  • jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_pinjam




Primary Key / Foreign Key
kode_kembali




Primary Key
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
kode_buku
Char
10
No
-
Primary Key / Foreign Key
tanggal_pinjam
Date

No

Primary Key / Foreign Key
tanggal_kembali
Date

No
-
-


16. Tabel: bayar_denda
Catatan: jika tabel kembali tidak menggunakan kode_kembali, maka harus ada kode_anggota+kode_buku+tanggal_pinjam+tanggal_kembali
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_kembali




Primary Key / Foreign Key
kode_anggota
Char
6
No
-
Primary Key/ Foreign Key
kode_buku
Char
10
No
-
Primary Key/ Foreign Key
tanggal_pinjam
Date

No

Primary Key/ Foreign Key
tanggal_bayar
Date

No
-
-
jumlah_denda
Num
9
No
0
Dihitung otomatis

17. Tabel: bayar_hilang
Catatan: jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_pinjam




Primary Key / Foreign Key
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
kode_buku
Char
10
No
-
Primary Key / Foreign Key
tanggal_pinjam
Date

No

Primary Key / Foreign Key
tanggal_bayar
Date

No
-
-
jumlah_denda
Num
9
No
0
Dihitung otomatis

18. Tabel: bayar_rusak
Catatan: jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_pinjam




Primary Key / Foreign Key
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
kode_buku
Char
10
No
-
Primary Key / Foreign Key
tanggal_pinjam
Date

No

Primary Key / Foreign Key
tanggal_bayar
Date

No
-
-
jumlah_denda
Num
9
No
0
Dihitung otomatis

19. Tabel: buku
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
kode_buku
Char
10
No
-
Primary Key
Judul_buku
VarChar
100
No
-
-
kode_jenis
Char
4
No
-
Foreign Key
kode_bidang
Char
4
No
-
Foreign Key
kode_penulis_utama
Char
4
No
-
Foreign Key
kode_penerbit
Char
4
No
-
Foreign Key
jumlah
Num
1
No
-
-
bahasa
Char
1
No
1
1 = Indonesia; 2 = Asing
isbn
Char
12
No
-
-
tahun
Char
4
No
-
-
jumlah_halaman
Num
1
No
-
-
edisi
Char
1
No
1
-
cetakan_ke
Char
1
No
1
-
status
Char
1
No
1
1 = Baik; 2 = Rusak






































  1. create database dbperpustakaan;
use dbperpustakaan