Mengenal Stored Procedure

3
MENGENAL VIEW, PROCEDURE DAN FUNCTION PROCEDURE Merupakan sebuah metode yang terenkapsulasi untuk melakukan sebuah tugas berulang-ulang. Pada sebuah stored procedure diijinkan untuk mendeklarasikan variabel, menggunakan control flow dan beberapa fungsi pemrograman lainnya. Syntax : CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body Contoh : DELIMITER // CREATE PROCEDURE `p2` () LANGUAGE SQL DETERMINISTIC SQL SECURITY DEFINER COMMENT 'A procedure' BEGIN SELECT 'Hello World !'; END// baris pertama yaitu Delimiter merupakan tanda dan akhir perintah. Sedangkan baris kedua merupakan pernyataan untuk mendefinisikan nama procedure, nama procedure bersifat case insensitive (tidak memperhatikan huruf besar dan huruf kecil). Pada bagian inti (body of procedure) kita dapat meletakan perintah DML maupun DDL (diapit oleh BEGIN dan END). Menggunakan Paramter di Procedure Parameter yang dapat dipergunakan dalam sebuah procedure dibedakan menjadi dua macam yaitu IN (untuk menerima input) dan OUT (untuk menampung output). Setiap paramter harus didefinisikan nama dan type data yang dapat ditampung atau diterima. Contoh menggunakan paramater IN DELIMITER $$ DROP PROCEDURE IF EXISTS `simptt`.`EPSBED_MHS_CKD`$$

description

Mengenal Stored Procedure

Transcript of Mengenal Stored Procedure

Page 1: Mengenal Stored Procedure

MENGENAL VIEW, PROCEDURE DAN FUNCTION

PROCEDUREMerupakan sebuah metode yang terenkapsulasi untuk melakukan sebuah tugas berulang-ulang. Pada

sebuah stored procedure diijinkan untuk mendeklarasikan variabel, menggunakan control flow dan

beberapa fungsi pemrograman lainnya.

Syntax :

CREATE

[DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body

Contoh :

DELIMITER //CREATE PROCEDURE `p2` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERCOMMENT 'A procedure'BEGIN

SELECT 'Hello World !';END//

baris pertama yaitu Delimiter merupakan tanda dan akhir perintah. Sedangkan baris kedua

merupakan pernyataan untuk mendefinisikan nama procedure, nama procedure bersifat case

insensitive (tidak memperhatikan huruf besar dan huruf kecil). Pada bagian inti (body of procedure)

kita dapat meletakan perintah DML maupun DDL (diapit oleh BEGIN dan END).

Menggunakan Paramter di Procedure

Parameter yang dapat dipergunakan dalam sebuah procedure dibedakan menjadi dua macam yaitu IN

(untuk menerima input) dan OUT (untuk menampung output). Setiap paramter harus didefinisikan

nama dan type data yang dapat ditampung atau diterima.

Contoh menggunakan paramater IN

DELIMITER $$

DROP PROCEDURE IF EXISTS `simptt`.`EPSBED_MHS_CKD`$$

Page 2: Mengenal Stored Procedure

CREATE DEFINER=`root`@`localhost` PROCEDURE `EPSBED_MHS_CKD`(IN _thAkademik INT)

BEGIN

select sql_cache nim,namalengkap,mhs.kdunitkerja,kdaktivitas,kdtahunakademik,nosk,tanggalsk

from ak_mahasiswa_ckd ckd

straight_join ak_mahasiswa mhs on mhs.kdmahasiswa=ckd.kdmahasiswa

straight_join pt_person p on p.kdperson=mhs.kdperson

where kdtahunakademik=_thAkademik

order by mhs.kdunitkerja,mhs.nim;

END$$

DELIMITER ;

Untuk memanggil procedure tersebut dipergunakan perintah CALL EPSBED_MHS_CKD(20141), 20141

merupakan parameter input yang dikirimkan ke procedure.

Contoh menggunakan paramater OUT

DELIMITER//

CREATE PROCEDURE simpleproc (OUT param1 INT)

BEGIN SELECT COUNT(*) INTO param1 FROM t; END//

Untuk memanggil procedure tersebut maka dipergunakan perintah CALL simpleproc(@x), artinya

memanggil procedure simpleproc dan hasil output ditampung pada variabel x

FUNCTIONBerbeda dengan procedure function akan mengembalikan akan mengembalikan nilai dengan menggunakan klausa RETURNS

CREATE [DEFINER = { user | CURRENT_USER }] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body

Contoh DELIMITER $$CREATE DEFINER=`root`@`localhost` FUNCTION `hitungluassegitiga`(alas DOUBLE, tinggi DOUBLE) RETURNS doubleBEGIN

DECLARE luas DOUBLE;SET luas =(alas*tinggi)/2;RETURN luas;

END$$

Page 3: Mengenal Stored Procedure

Untuk memanggil fungsi tersebut maka dipergunakan perintah SELECT hitungluassegitiga(2,2) akan menghasilkan angka 2

VIEWView merupakan fitur yang tersedia pada mysql sebagai solusi untuk menyederhanakan pengambilan data agar menjadi lebih informatif, view kadang juga disebut sebagai virtual table. Yang terdapat dalam view adalah bahasa DML (data manipulation language) seperti SELECT FROM JOIN WHERE GROUP BY HAVING.Perintah DML yang panjang dan melibatkan banyak tabel dapat dibuat menjadi sebuah view sehingga ketika kita membutuhkan data-data tersebut cukup memanggil view tersebut.

Contoh :CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `simptt`.`sdmvprofilbiodatapegawai` AS select `p`.`kdperson` AS `kdperson`,`p`.`nip` AS `nip`,`per`.`namalengkap` AS `namalengkap`,`per`.`tempatlahir` AS `tempatlahir`,`per`.`tanggallahir` AS `tanggallahir`,`gp`.`grupperson` AS `grupperson`,`uk`.`unitkerja` AS `unitkerja`,`p`.`noskpertama` AS `noskpertama`,`p`.`tglskpertama` AS `tglskpertama`,`p`.`noskterakhir` AS `noskterakhir`,`p`.`tglskterakhir` AS `tglskterakhir`,`per`.`alamatlengkap` AS `alamatlengkap`,`per`.`notelpon` AS `notelpon` from (((`simptt`.`pt_pegawai` `p` straight_join `simptt`.`pt_person` `per` on((`per`.`kdperson` = `p`.`kdperson`))) straight_join `simptt`.`pt_grupperson` `gp` on((`gp`.`kdgrupperson` = `p`.`kdgrupperson`))) straight_join `simptt`.`pt_unitkerja` `uk` on((`uk`.`kdunitkerja` = `p`.`kdunitkerja`))) order by `p`.`kdperson`

Tampak pada contoh perintah untuk mendapatkan data profil pegawai sangat panjang dan melibatkan banyak tabel akan tetapi setelah view berhasil dibuat maka pekerjaan tersebut menjadi lebih ringan dan tidak diperlukan menuliskan ulang perintah tersebut.