Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
2
SINTAK STORED PROCEDURE
Pertemuan II SINTAK STORED PROCEDURE
3
TUJUAN: Mahasiswa dapat memahami sintak-sintak dalam stored procedure dan stored function untuk: Membuat Menghapus Memanggil Melihat isi Melihat daftar Mahasiswa dapat memahami sintak untuk gabungan statement dengan BEGIN … END Mahasiswa dapat memahami ekspresi dalam stored procedure Mahasiswa dapat memahami parameter dalam stored procedure
4
Sintak-sintak dalam Stored Procedure dan Stored Function
Sintak untuk membuat : Procedure CREATE PROCEDURE sp_name ([proc_parameter [,…]]) [characteristic ..] routine_body Function CREATE FUNCTION sp_name ([func_parameter [,…]]) RETURN type [characteristic ..] routine_body
5
Dimana : Proc_parameter: [IN | OUT | INOUT] param_name type
Func_parameter Param_name type Type : Semua type data yang valid di MySQL. Characteristic: LANGUAGE SQL [NOT] DETERMINISTIC {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } SQL SECURITY {DEFINER | INVOKER } COMMENT ‘string’ Routine_body: Statement SQL procedure yang valid.
6
Penjelasan Secara default, routine berasosiasi dengan default database. Untuk berasosiasi secara eksplisit dengan database yang diberikan, secara spesifik diberi nama db_name.sp_name pada saat membuat routine. Jika tidak ada parameter maka empty parameter digunakan dengan menggunakan ( ). Setiap parameter memiliki IN parameter sebagai default. IN, OUT, INOUT parameter hanya valid untuk procedure, sedangkan untuk function hanya IN parameter saja. RETURN type hanya berlaku untuk function. ROUTINE_BODY berisi statement SQL yang valid. Dapat berisi statement sederhana seperti SELECT atau INSERT atau berisi gabungan beberapa statement yang dapat ditulis dengan menggunakan BEGIN .. END. Compound statement dapat berisi deklarasi, loop dan struktur kontrol yang lain.
7
Sintak untuk menghapus
Sintak untuk mengubah Untuk mengubah stored procedure atau function pertama kali yang dilakukan adalah menghapus terlebih dahulu procedure / function nya kemudian baru dibuat kembali. Sintak untuk menghapus DROP {PROCEDURE|FUNCTION} [IF EXIST] sp_name Contoh: Drop Procedure spLihatBarang; Sintak untuk memanggil CALL sp_name Contoh: Call spLihatBarang();
8
Contoh Membuat Prosedur
DELIMITER $$ DROP PROCEDURE IF EXISTS `pbd`.`splihatbarang`$$ CREATE PROCEDURE `pbd`.`splihatbarang` () BEGIN select * from barang; END$$ DELIMITER ;
9
Sintak untuk melihat isi dari procedure / functions
SHOW CREATE {PROCEDURE|FUNCTION} sp_name; Contoh: Show create procedure splihatbarang; Sintak untuk melihat daftar / list fungsi dan prosedur SHOW {PROCEDURE|FUNCTION} status; Contoh : Show procedure status; Show function status;
10
Sintak untuk gabungan statement
Kadangkala dalam suatu stored routines dan trigger dibutuhkan untuk menulis beberapa buah statement sekaligus. Gabungan statement / compound statement tersebut diawali dengan BEGIN dan diakhiri dengan END. Diantara BEGIN … END, dapat terdiri dari satu atau banyak statement dan masing-masing statement harus diakhiri dengan tanda semikolon (;), Karena setiap statement harus diakhiri dengan semikolon (;) maka diperlukan untuk mengganti delimiter dari ; menjadi delimiter yang diinginkan, misalnya dengan menggunakan // atau $$. Pengubahan delimiter ini akan membuat setiap statement dalam stored routine dapat menggunakan ;
11
Contoh : mysql > DELIMITER $$
mysql > create procedure splihatbarang() -> begin -> select * from barang; -> select * from detailpembelian; -> end; -> $$
12
EKSPRESI DALAM STORED PROCEDURE
Penggunaan stored procedure memungkinkan program aplikasi menampilkan kolom ekspresi, yaitu kolom yang merupakan ekspresi yang melibatkan kolom aslinya. Misalnya dalam kasus pembelian barang terdapat discount sebesar 0,1 dari jumlah barang yang dibeli dikali dengan harga belinya dan total jumlah menjadi jumlah barang yang dibeli dikali dengan harga belinya dikali dengan 0,9
13
Sehingga procedure yang dibuat dengan memanfaatkan ekspresi sebagai berikut :
DELIMITER $$ CREATE PROCEDURE ‘pbd’.`spHitungBeli`() BEGIN select noreference, kodebarang,hargabeli,jumlahbarang, jumlahbarang*hargabeli as Jumlah, jumlahbarang*hargabeli*0.1 as Discount, jumlahbarang*hargabeli*0.9 as Total from detailpembelian; END $$ DELIMITER ;
14
STORED PROCEDURE dengan PARAMETER
Parameter merupakan variabel memori yang digunakan untuk menerima suatu nilai dari pemangilnya. Stored procedure dapat menggunakan parameter sehingga program aplikasi yang memanggil stored procedure dapat mengakses database yang diperlukan sesuai dengan kondisi yang diminta yaitu dengan cara mengirimkan suatu nilai ke Stored Procedure melalui parameter. Sebagai contoh aplikasi untuk mencari data, nilai pencarian akan berubah-ubah tergantung permintaan user.
15
Terdapat 3 mode parameter yaitu :IN, OUT dan INOUT :
IN (default) akan mempassingkan nilai konstan dari memori ke stored procedure OUT akan mengambil nilai dari prosedur IN OUT akan mempassingkan nilai dari memori ke dalam procedure dan memungkinkan nilai yang berbeda dari prosedur dikembalikan ke memori dengan menggunakan parameter yang sama. Secara default stored procedure / function memiliki parameter IN. Kata IN tidak perlu ditambahkan sebelum nama parameter.
16
Pemakaian IN Parameter
Contoh : Pemakaian IN Parameter DELIMITER $$ CREATE PROCEDURE spInfoBeli(pKodeBarang varchar(20)) BEGIN SELECT NoReference, KodeBarang, HargaBeli, JumlahBarang, HargaBeli*JumlahBarang*0.9 as Total From detailPembelian Where KodeBarang like pKodeBarang; End;$$ CALL spInfoBeli (‘PS.001’); CALL spInfoBeli (‘%PS%’);
17
Pemakaian OUT Parameter
DELIMITER $$ CREATE PROCEDURE ‘pbd’.`spoutparam`(OUT param1 INT) BEGIN select count(*) into param1 from barang; END $$ DELIMITER ; Mysql > CALL Mysql >
18
Pemakaian IN dan OUT parameter
DELIMITER $$ DROP PROCEDURE IF EXISTS `pbd`.`film_in_stock` $$ CREATE PROCEDURE `film_in_stock`(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT) READS SQL DATA BEGIN SELECT inventory_id FROM inventory WHERE film_id = p_film_id AND store_id = p_store_id AND inventory_in_stock(inventory_id); SELECT FOUND_ROWS() INTO p_film_count; END $$ DELIMITER ;
19
Pemakaian INOUT Parameter
DELIMITER $$ CREATE PROCEDURE `spPhone`(INOUT phone varchar(25)) BEGIN select concat('(',substring(phone,1,3),')',substring(pho ne,4,3),' - ',substring(phone,7)) into phone; END $$ DELIMITER ;
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.