Setelah belajar mengenai Stored Procedure, kita akan belajar mengenai Cursor. Hasil yang akan didapat oleh Stored Procedur dengan atau tanpa Cursor akan sama. Perbedaannya adalah dengan menggunakan Cursor, kita hanya akan melock 1 row saja, berbeda jika tanpa Cursor yang akan melock semua data yang akan digunakan.
Kekurangan dan kelebihan menggunakan Cursor
+ lock hanya 1 baris saja
+ ada beberapa operasi yang harus menggunakan Cursor
- coding jadi lebih rumit
+ lock hanya 1 baris saja
+ ada beberapa operasi yang harus menggunakan Cursor
- coding jadi lebih rumit
Sebagai contoh misalnya kita ingin membuat SP untuk mengupdate salary berdasarkan job jika mendapatkan bonus. Ada 2 cara yang dapat dilakukan yaitu tanpa Cursor dan tanpa Cursor
Jika tanpa Cursor, maka Stored Procedure yang diperlukan adalah sebagai berikut
create procedure proc_2(in bonus double,in work varchar(10))
dynamic result sets 1
p1: begin
update staff set salary = salary + bonus where job= work;
end p1
create procedure proc_2(in bonus double,in work varchar(10))
dynamic result sets 1
p1: begin
update staff set salary = salary + bonus where job= work;
end p1
Jika menggunakan Cursor, maka Stored Procedure yang diperlukan adalah sebagai berikut
create procedure proc_1(in bonus double,in work varchar(10))
dynamic result sets 1
p1: begin
declare now_salary double;
declare c1 cursor with return for
select salary from staff where job=work;
open c1;
fetch from c1 into now_salary;
close c1;
set now_salary = now_salary + bonus;
update staff set salary = now_salary where job= work;
end p1
create procedure proc_1(in bonus double,in work varchar(10))
dynamic result sets 1
p1: begin
declare now_salary double;
declare c1 cursor with return for
select salary from staff where job=work;
open c1;
fetch from c1 into now_salary;
close c1;
set now_salary = now_salary + bonus;
update staff set salary = now_salary where job= work;
end p1
Berikut screen shootnya
Untuk menjalankannya melalui DB2cmd, Stored Procedure dapat dipanggil dengan menggunakan “db2 call proc_2(100.0,’Mgr’)”.
Untuk menjalankannya melalui DB2cmd, Stored Procedure dapat dipanggil dengan menggunakan “db2 call proc_2(100.0,’Mgr’)”.
Tidak ada komentar:
Posting Komentar