15
CONTOH STORE PROCEDURE DAN FUNCTION Masuk dalam mysql dan buat database terlebih dahulu. Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database latihan6; Query OK, 1 row affected (0.00 sec) mysql> use latihan6 Database changed mysql> create table mahasiswa(no_mhs varchar(9),nama varchar(25),alamat text) -> ; Query OK, 0 rows affected (0.09 sec) PROCEDURE Untuk memudahkan dalam pembuatan store procedure dan function ini dapat digunakan sqlyog. Membuat procedure untuk mengisi data mahasiswa. DELIMITER $$ DROP PROCEDURE IF EXISTS `latihan6`.`insert_data`$$

Contoh store procedure dan function

Embed Size (px)

Citation preview

Page 1: Contoh store procedure dan function

CONTOH STORE PROCEDURE DAN FUNCTION

Masuk dalam mysql dan buat database terlebih dahulu.

Enter password: ****

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database latihan6;

Query OK, 1 row affected (0.00 sec)

mysql> use latihan6

Database changed

mysql> create table mahasiswa(no_mhs varchar(9),nama varchar(25),alamat

text)

-> ;

Query OK, 0 rows affected (0.09 sec)

PROCEDURE

Untuk memudahkan dalam pembuatan store procedure dan function ini dapat

digunakan sqlyog.

Membuat procedure untuk mengisi data mahasiswa.

DELIMITER $$

DROP PROCEDURE IF EXISTS `latihan6`.`insert_data`$$

Page 2: Contoh store procedure dan function

CREATE PROCEDURE `latihan6`.`insert_data`(nomhs char(9),nama

varchar(25),alamat varchar(60))

BEGIN

insert into mahasiswa values(nomhs,nama,alamat);

END$$

DELIMITER ;

Untuk memanggilnya dengan cara memasukkan parameter kedalam

procedure yang telah dibuat seperti berikut ini.

mysql> select*from mahasiswa;

Empty set (0.00 sec)

mysql> call insert_data('095410168', 'purwant', 'bantul yogyakarta');

Query OK, 1 row affected (0.03 sec)

mysql> select*from mahasiswa;

+-----------+---------+-------------------+

| no_mhs | nama | alamat |

+-----------+---------+-------------------+

| 095410168 | purwant | bantul yogyakarta |

+-----------+---------+-------------------+

1 row in set (0.00 sec)

mysql> call insert_data('095410178', 'ekosetiawan', 'bantul

yogyakarta');

Query OK, 1 row affected (0.00 sec)

mysql> select*from mahasiswa;

Page 3: Contoh store procedure dan function

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwant | bantul yogyakarta |

| 095410178 | ekosetiawan | bantul yogyakarta |

+-----------+-------------+-------------------+

MEMBUAT PROCEDURE UNTUK MENGUPDATE DATA

MAHASISWA

DELIMITER $$

DROP PROCEDURE IF EXISTS `latihan6`.`update_mahasiswa`$$

CREATE PROCEDURE `latihan6`.`update_mahasiswa`(nim

char(9),na varchar(25),almt varchar(35))

BEGIN

update mahasiswa set nama=na , alamat=almt where no_mhs=nim;

END$$

DELIMITER ;

Untuk memanggil procedure tersebut dapat di lakukan seperti ini

mysql> select*from mahasiswa;

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwant | bantul yogyakarta |

Page 4: Contoh store procedure dan function

| 095410178 | ekosetiawan | bantul yogyakarta |

+-----------+-------------+-------------------+

2 rows in set (0.00 sec)

Disini akan mengubah nama dan alamat dari mahasiswa yang

bernama purwant,

Mengganti nama menjadi purwanto dan alamatnya di sleman

jogjakarta.

Untuk melakukannya dapat dengan cara memanggil procedure

update_mahasiswa sebagai berikut.

mysql> call update_mahasiswa('095410168', 'purwanto', 'sleman

jogjakarta');

Query OK, 1 row affected (0.00 sec)

Hasilnya adalah sebagai berikut.

mysql> select*from mahasiswa;

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwanto | sleman jogjakarta |

| 095410178 | ekosetiawan | bantul yogyakarta |

+-----------+-------------+-------------------+

2 rows in set (0.00 sec)

MEMBUAT PROCEDURE UNTUK MENGHAPUS MAHASISWA

Tambahkan data sebagai berikut

mysql> call insert_data('000', 'gk jelas', 'belum punya');

Page 5: Contoh store procedure dan function

Query OK, 1 row affected (0.00 sec)

mysql> select*from mahasiswa;

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwanto | sleman jogjakarta |

| 095410178 | ekosetiawan | bantul yogyakarta |

| 000 | gk jelas | belum punya |

+-----------+-------------+-------------------+

Procedure hapus data mahasiswa

DELIMITER $$

DROP PROCEDURE IF EXISTS `latihan6`.`hapus_mhs`$$

CREATE PROCEDURE `latihan6`.`hapus_mhs`(nim char(9))

BEGIN

delete from mahasiswa where no_mhs=nim;

END$$

DELIMITER ;

untuk menghapus data mahasiswa dapat di lakukan dengan cara

memasukkan no_mhs yang akan dihapus pada parameter.

Contoh:

Page 6: Contoh store procedure dan function

mysql> select*from mahasiswa;

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwanto | sleman jogjakarta |

| 095410178 | ekosetiawan | bantul yogyakarta |

| 000 | gk jelas | belum punya |

+-----------+-------------+-------------------+

Hapus mahasiswa dengan no_mhs 000.

mysql> call hapus_mhs('000');

Query OK, 1 row affected (0.00 sec)

Hasilnya menjadi

mysql> select*from mahasiswa;

+-----------+-------------+-------------------+

| no_mhs | nama | alamat |

+-----------+-------------+-------------------+

| 095410168 | purwanto | sleman jogjakarta |

| 095410178 | ekosetiawan | bantul yogyakarta |

+-----------+-------------+-------------------+

2 rows in set (0.00 sec)

Page 7: Contoh store procedure dan function

FUNCTION

Membuat fungsi untuk menampilkan alamat mahasiswa.

DELIMITER $$

DROP FUNCTION IF EXISTS `latihan6`.`cekalamat`$$

CREATE FUNCTION `latihan6`.`cekalamat`(nim char(9))

RETURNS text

BEGIN

declare almt text;

select alamat into almt from mahasiswa where no_mhs=nim;

return almt;

END$$

DELIMITER ;

Didalam function mysql declare merupakan tempat menampung hasil dari

perintah query, karena didalam function hanya akan mengembalikan sebuah

nilai. Maka perintah select diatas dimasukkan dalam declare alamat, yaitu pada

perintah select alamat into.

Untuk memanggil fucntion tersebut dapat dilakukan dengan cara seperti berikut.

mysql> select cekalamat('095410168');

+------------------------+

| cekalamat('095410168') |

+------------------------+

Page 8: Contoh store procedure dan function

| sleman jogjakarta |

+------------------------+

1 row in set (0.00 sec)

Perintah function hanya akan mengembalikan sebuah nilai sehingga dapat

dimasukkan pada query biasa untuk mengecek alamat mahasiswa.

Seperti contoh berikut ini.

Page 9: Contoh store procedure dan function

mysql> select nama,cekalamat(no_mhs) from mahasiswa;

+-------------+-------------------+

| nama | cekalamat(no_mhs) |

+-------------+-------------------+

| purwanto | sleman jogjakarta |

| ekosetiawan | bantul yogyakarta |

+-------------+-------------------+

2 rows in set (0.00 sec)

Setiap no_mhs akan memiliki nilai kembalian berupa alamat.

Page 10: Contoh store procedure dan function

CONTOH PROCEDURE DAN FUNCTION PERHITUNGAN

Procedure penjumlahan tanpa parameter

DELIMITER $$

DROP PROCEDURE IF EXISTS `latihan6`.`tambah`$$

CREATE PROCEDURE `latihan6`.`tambah`()

BEGIN

select 8+9;

END$$

DELIMITER ;

mysql> call tambah;

+-----+

| 8+9 |

+-----+

| 17 |

+-----+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Procedure operasi perhitungan sederhana dengan dua buah parameter

DELIMITER $$

DROP PROCEDURE IF EXISTS `latihan6`.`hitung`$$

CREATE PROCEDURE `latihan6`.`hitung`(a int,b int)

BEGIN

select a+b,a-b,a*b,a/b;

END$$

DELIMITER ;

Page 11: Contoh store procedure dan function

mysql> call hitung(16,4);

+------+------+------+--------+

| a+b | a-b | a*b | a/b |

+------+------+------+--------+

| 20 | 12 | 64 | 4.0000 |

+------+------+------+--------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Membuat function untuk menghitung

DELIMITER $$

DROP FUNCTION IF EXISTS `latihan6`.`hitung`$$

CREATE FUNCTION `latihan6`.`hitung`(a int,b int)

RETURNS int

BEGIN

return a+b;

END$$

DELIMITER ;

mysql> select hitung(9,6);

+-------------+

| hitung(9,6) |

+-------------+

| 15 |

+-------------+

1 row in set (0.00 sec)

Page 12: Contoh store procedure dan function

Referensi

- Mysql reference manual

Page 13: Contoh store procedure dan function

UNTUK PEMBAHASAN PRAKTIKUM SILAHKAN BAHAS TENTANG

PROCEDURE PADA PRAKTIKUM DIANTARANYA SEBAGAI BERIKUT.

DELIMITER $$

DROP PROCEDURE IF EXISTS `bank`.`isi_saldo`$$

CREATE PROCEDURE `bank`.`isi_saldo`(noreck varchar(10),jumlah int)

BEGIN

update saldo_nasabah set jumlah_saldo=jumlah_saldo + jumlah;

END$$

DELIMITER ;

DELIMITER $$

CREATE PROCEDURE `transfer`(pengirim varchar(10),penerima

varchar(10),jumlah_kirim int)

BEGIN

update saldo_nasabah set jumlah_saldo=jumlah_saldo + jumlah_kirim

where no_reck=penerima;

update saldo_nasabah set jumlah_saldo=jumlah_saldo - jumlah_kirim

where no_reck=pengirim;

insert into transfer values (pengirim,penerima,jumlah_kirim,date(now()));

Page 14: Contoh store procedure dan function

END$$

DELIMITER ;

DELIMITER $$

CREATE PROCEDURE `tambah_nsabah`(noreck varchar(10),nm

varchar(40),almt varchar(70),jenis char(1))

BEGIN

insert into nasabah value(noreck,nm,almt,jenis);

insert into saldo_nasabah value(noreck,200000);

END$$

DELIMITER ;bank

DELIMITER $$

CREATE FUNCTION `ceksaldo`(noreck varchar(10))

RETURNS int(11)

BEGIN

declare saldo int;

select jumlah_saldo into saldo from saldo_nasabah where no_reck=noreck;

return saldo;

END$$

Page 15: Contoh store procedure dan function

DELIMITER ;

select nama_nasabah ,ceksaldo(no_reck) from nasabah;

JELASKAN PROCEDURE DAN FUNCTION

DIATASBESERTA ANALISIS HASIL DARI

EKSEKUSI STOREDPROCEDURE DAN FUNCTION

TERSEBUT !!!!!