BASISDATA
FUNCTION DAN PROSEDURE
LABORATORIUM 4 BASISDATA
MENU PART INI
Membuat function
b.
c.
Menghapus function
3. Procedure
a.
Membuat procedure
b.
ii.
iii.
iv.
v.
Parameter IN
Parameter OUT
Parameter INOUT
Melihat procedure yang telah dibuat
Menghapus procedure
Variabel
b.
Kendali Kondisional.
i.
ii.
c.
Kendali IF
Kendali CASE
Perulangan
i. Perulangan WHILE
1. Fuction
Sebuah function dapat digunakan secara langsung dalam statement SELECT,
UPDATE,
dan
DELETE.
Hasil
dari
function
dapat
dikembalikan
sebagai
1.1
Membuat fuction
| Doe
| Alison
| Mathews
| James
| Smith
| Celia
| Rice
| Robert
| Black
| Linda
| Green
| David
| Larry
| Hercule
| Poirot
| Lincoln
| Rhyme
| Sherlock
| Holmes
+------------+---------------+
10 rows in set (0.00 sec)
Selanjutnya kita membuat function
mysql> delimiter //
mysql>
create
function
nama_lengkap(in_nama_depan
varchar(15),
in_nama_belakang varchar(15))
-> returns varchar(35)
-> begin
-> return concat(in_nama_depan,' ',in_nama_belakang);
-> end //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> select nama_lengkap(nama_depan,nama_belakang) from pekerja;
+-----------------------------------------+
| nama_lengkap(nama_depan, nama_belakang) |
+-----------------------------------------+
| John Doe
| Alison Mathews
| James Smith
| Celia Rice
| Robert Black
| Linda Green
| David Larry
| Hercule Poirot
| Lincoln Rhyme
| Sherlock Holmes
+-----------------------------------------+
10 rows in set (0.00 sec)
1.2
dilihat menggunakan
1.3
Menghapus function
2. Procedure
Procedure dapat berisi statement SQL (INSERT, UPDATE, DELETE, SELECT)
atau
operasi
lain
dapat dipanggil
yang
disimpan
dalam
menggunakan statement
database.
Sebuah
CALL nama_procedure
procedure
disertai
2.1
membuat procedure
mysql> delimiter //
mysql> create procedure show_pekerja()
-> begin
-> select*from pekerja;
-> end //
Query OK, 0 rows affected (0.00 sec)
mysql> alter table <nama tabel> add nama kolom (tipe data)(20);
mysql> alter
data(15);
table
<nama
tabel>
modify
<nama
field>
where no_plat='B-3454-SDE';
| pekerjaan |
+------------+---------------+--------+---------+-----------+
| John
| Doe
| Sleman |
500000 | Programer |
| Alison
| Mathews
| Sleman |
500000 | Programer |
| James
| Smith
| Celia
| Rice
| Robert
| Black
| Klaten |
200000 | Security
| Linda
| Green
| Bantul |
200000 | Security
| David
| Larry
| Bantul |
500000 | Programer |
| Hercule
| Poirot
| Klaten |
500000 | Programer |
| Lincoln
| Rhyme
| Klaten |
500000 | Programer |
tipe
| Sherlock
| Holmes
+------------+---------------+--------+---------+-----------+
10 rows in set (0.00 sec)
2.2
Procedure
menerima
parameter
(proc_parameter)
yang
didefinisikan
sebagai berikut:
proc_parameter:
[ IN | OUT | INOUT ] param_name type
Dalam parameter procedure, didefinisikan jenis parameter, yaitu IN,
OUT, atau INOUT. Bila tidak dispesifikasikan saat pembuatan, maka
default jenis parameter yang dipilih adalah IN.
Parameter
IN
mengirimkan
Procedure
bisa
saja
sebuah
merubah
nilai
nilai
ke
dalam
parameter
procedure.
ini,
namun
inisial
dari
parameter
ini
adalah
NULL
dan
nilainya
Parameter
dimodifikasi
INOUT
oleh
diinisialisasi
procedure,
dan
oleh
pemanggil,
perubahan
nilai
2.2.1 parameter IN
Berikut adalah contoh penggunaan parameter IN:
dapat
parameter
mysql> delimiter $$
mysql>
create
procedure
getPekerjaByAlamat
(in
namaAlamat
varchar(255))
-> begin
-> select*from pekerja where alamat LIKE namaAlamat;
-> end $$
Mysql> delimiter ;
Pada
contoh
di
atas,
dibuat
procedure
getPekerjaByAlamat
dengan
sesuai
parameter
masukan.
Pemanggilan
procedure
ini
dapat
dilihat pada contoh di bawah ini. Pada contoh ini, kita memasukkan
Sleman sebagai parameter masukan procedure.
| Doe
| Sleman |
| Alison
| Mathews
| Sleman |
| Sherlock
| Holmes
| Sleman |
+------------+---------------+--------+
3 rows in set (0.00 sec)
mysql> delimiter ;
mysql> delimiter ;
Pada contoh di atas, kita membuat procedure increase untuk
menambahkan input dengan nilai 15. Memodifikasi nilai parameter
input
dilakukan
dengan
menggunakan
SET.
Contoh
berikut
memperlihatkan
bagaimana
memanggil
procedure
increase.
Kita
mendefinisikan terlebih dahulu variabel session @num dengan nilai
100. Kemudian setelah pemanggilan increase, nilai @num menjadi 115.
mysql> set @num = 100;
Query OK, 0 rows affected (0.00 sec)
115 |
+------+
1 row in set (0.00 sec)
yang
telah
kita
buat
dapat
dihapus
menggunakan
DROP
PROCEDURE.
Mysql> DROP PROCEDURE increaseGaji;
mysql> delimiter #
mysql>
create
nama_belakang
procedure
varchar(10),
isi_data(
alamat
in
nama_depan
varchar(20),
varchar(10),
gaji
int(8),
insert
into
pekerja
values(nama_depan,
call isi_data(,,,,,);
nama_belakang,
+------+---------+
| Fera | Abarawa |
| Rara | Jogja
| Didi | Sleman
+------+---------+
HAPUS DATA DENGAN PROCEDURE
mysql> delimiter #
mysql> create procedure hapus_data(in namaDepan varchar(10))
-> begin
-> delete from pekerja where nama_depan=namaDepan;
-> end #
Query OK, 0 rows affected (0.00 sec)
Mysql> delimiter ;
Call hapus_data(Didi);
mysql> select * from pekerja;
+------+---------+
| nama | alamat
+------+---------+
| Fera | Abarawa |
| Rara | Jogja
+------+---------+