© Ilmu Komputer UGM Stored Procedure MySQL 5
© Ilmu Komputer UGM Definisi Stored procedure adalah kumpulan dari statemen SQL yang digunakan secara bersama-sama. Stored procedure menginjinkan penggunaan statemen SQL lebih dari sekedar statemen SQL biasa untuk meretrieve dan mengupdate database. Stored procedure mendukung penggunaan variable, kondisi, flow control dan cursor. Stored procedure dapat terdiri dari paling tidak satu statemen sampai dengan ratusan/ribuan baris.
© Ilmu Komputer UGM Keuntungan Memungkinkan kita menggunakan beberapa statemen query sekaligus. Efisiensi hasil query yang diproses/dikirimkan ke klien. Memberikan interface yang sederhana terhadap data dari klien. Pengelolaan query menjadi lebih mudah dan terpusat. Memudahkan ketika adanya proses optimasi dan perubahan pada business proses Meningkatkankeamanan
© Ilmu Komputer UGM Kerugian Membebani database server Lebih kelihatan kompleks
© Ilmu Komputer UGM
© Ilmu Komputer UGM Sample Database Database yang digunakan adalah database Northwind.
© Ilmu Komputer UGM Parameter ::= –CREATE PROCEDURE ( [ ] ) – ::= – [, ]... ::= –[ IN | OUT | INOUT ]
© Ilmu Komputer UGM CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type characteristic: –LANGUAGE SQL | –[NOT] DETERMINISTIC | –{ CONTAINS SQL | NO SQL | –READS SQL DATA | –MODIFIES SQL DATA } | –SQL SECURITY { DEFINER | INVOKER } | –COMMENT 'string' routine_body: Valid SQL procedure statements or statements
© Ilmu Komputer UGM Contoh Create procedure tampil_customers() Select * from customers; Digunakan untuk menampilkan seluruh data customer; Call tampil_customers();
© Ilmu Komputer UGM delimiter // create procedure cari_customer(in cust_id varchar(5), out comp_name varchar(40)) begin select companyname from customers where customerid = cust_id into comp_name; end //
© Ilmu Komputer UGM Call
© Ilmu Komputer UGM Query data dgn Select Into ::= [ [ ] [ ] ] ::= | ::= INTO [, ]...
© Ilmu Komputer UGM create procedure kali_belanja (in cust_id varchar(5), out kali_belanja int) begin select count(cust_id) into kali_belanja from orders where customerid = cust_id; end
© Ilmu Komputer UGM Call
© Ilmu Komputer UGM Tugas Tampilkan nama employee dengan id tertentu dan berapa kali mereka melayani customernya. Tampilkan nama customer dengan id tertentu dan besarnya discount yang diperoleh. Tampilkan nama customer dengan id tertentu dan berapa kali mereka bertransaksi. Tampilkan nama barang dengan kode tertentu dan berapa kali ditransaksikan. Tampilkan nama customer dengan id tertentu dan berapa besar nilai yang sudah mereka transaksikan.
mysql> delimiter // mysql> create procedure empproc(in name char(12),in fathername char(12),in password char(12)) -> begin -> insert into emp values(name,fathername,password); -> end; -> // © Ilmu Komputer UGM
mysql> delimiter // mysql> CREATE PROCEDURE Proc(OUT p VARCHAR(20), OUT p1 VARCHAR(20),IN p2 INT) -> BEGIN -> INSERT INTO Emp VALUES(p2,'Suman','Pune','Web Designer',20000,965); -> SELECT Ename,City INTO p,p1 FROM Emp WHERE Eid=p2; - > END -> // Query OK, 0 rows affected (0.01 sec) mysql> delimiter ; mysql> CALL Query OK, 0 rows affected (0.03 sec) mysql> SELECT © Ilmu Komputer UGM
mysql> CREATE FUNCTION func(str CHAR(20)) -> RETURNS CHAR(50) -> RETURN CONCAT('WELCOME TO, ',str,'!'); Query OK, 0 rows affected (0.00 sec) mysql> SELECT func('RoseIndia'); © Ilmu Komputer UGM
© Ilmu Komputer UGM