Mengenal Stored Procedure
-
Upload
nashrulambon -
Category
Documents
-
view
9 -
download
0
description
Transcript of Mengenal Stored Procedure
![Page 1: Mengenal Stored Procedure](https://reader035.fdokumen.com/reader035/viewer/2022072002/563db8bb550346aa9a9669fa/html5/thumbnails/1.jpg)
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](https://reader035.fdokumen.com/reader035/viewer/2022072002/563db8bb550346aa9a9669fa/html5/thumbnails/2.jpg)
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](https://reader035.fdokumen.com/reader035/viewer/2022072002/563db8bb550346aa9a9669fa/html5/thumbnails/3.jpg)
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.