Tuesday, June 5, 2007

Stored Procedure di MySQL - Part 1

Apakah yang dimaksud dengan stored prosedure ?
Stored prosedure merupakan sql yang disimpan server atau stroed lainnya, berguna untuk dan efektifitas dalam query. tulisan ini, menjelaskan bagaimana stored prosedure di MySQL

a. Memulai Stored Prosedure
mysql> delimiter &&
mysql> drop procedure if exists Salam&&
Query OK, 0 rows affected (0.01 sec)
mysql> create procedure Salam()
-> begin
-> select "Assalamualaikum";
-> end;
-> &&
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call Salam();
+-----------------+
Assalamualaikum
+-----------------+
Assalamualaikum
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)


Ket :
- delimiter && untuk memulai suatu stored procedure
- drop procedure if exists Salam&& untuk drop/delete
telah ada stored procedure dengan nama Salam
- create procedure Salam(),membuat Sp dengan nama Salam()
- begin, untuk memulai menulisan sql yang akan dieksekusi
- end ;, sebagai akhir stored procedure
- && , tutup
- delimiter ;, akhir/tutup delimiter
- call Salam(), eksekusi stored procedure

2. SP dengan parameter output
mysql> create procedure RataanGaji(out rataangaji int) //adanya parameter output yaitu rataangaji
-> begin
-> select avg(salary) into rataangaji from employee; //Menyimpan hasil avg(salary) ke rataangaji
-> end;
-> &&
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call RataanGaji(@result); //@result sebagai parameter output
Query OK, 0 rows affected (0.00 sec)
mysql> select @result; //Keluarkan hasil di @result
+---------+
@result
+---------+
9905000
+---------+
1 row in set (0.00 sec)


3. SP dengan parameter input
delimiter &&
drop procedure if exists DataEmployee&&
create procedure DataEmployee(input int) //parameter int
begin
select *from employee where employee_id = input;
end;
&&
delimiter ;
call DataEmployee(101)
--outputnya--
101, 'ahmad yassin', 'yasin@yahoo.com', '081246798246', 15000000, , 1


4. SP menggunakan deklarasi variable
delimiter &&
drop procedure if exists DataEmployee2&&
create procedure DataEmployee2(input int)
begin
declare nama varchar(30);
declare gaji int;
select employee_name, salary into nama, gaji from employee where employee_id = input;
select nama,gaji;
end;
&&
delimiter ;
call DataEmployee2(101)
--output--
ahmad yassin,15000000