Looping di Stored Procedure DB2

Kali ini saya akan mencontohkan penggunaan looping di Stored Procedure. Masalah yang ingin dipecahkan adalah kita ingin menghasilkan laporan pajak sebesar 10% dari salary yang diterima oleh staff. Dalam kasus ini juga dicontohkan bagaimana menggabungkan Stored Procedure dengan UDF. Sebelum menjalankan ini, buat terlebih dahulu table bernama tax untuk menampung ID, salary dan tax dengan syntax berikut “db2 create table tax (id integer,salary decimal(7,2),tax decimal(7,2))” . Kemudian buat SP dan UDFnya lalu jalankan melalui Stored Procedure.

Berikut adalah coding Stored Procedurenya
CREATE PROCEDURE PROC_4 ( )
DYNAMIC RESULT SETS 1
————————————————————————
– SQL Stored Procedure
————————————————————————
P1: BEGIN
DECLARE nip INTEGER;
DECLARE tax DOUBLE;
DECLARE salary DOUBLE;
DECLARE SQLSTATE CHAR(5) DEFAULT ’00000′;
– Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT id,salary from staff;
– Cursor left open for client application
OPEN cursor1;
FETCH FROM cursor1 INTO nip,salary;
WHILE(SQLSTATE = ’00000′) DO
SET tax = FUNCTION1(nip);
INSERT INTO tax (id,salary,tax) values(nip,salary,tax);
FETCH FROM cursor1 INTO nip,salary;
END WHILE;
CLOSE cursor1;
END P1

Berikut coding UDFnya
CREATE FUNCTION FUNCTION1(nip INTEGER )
RETURNS DOUBLE
NO EXTERNAL ACTION
————————————————————————
– SQL UDF (Scalar)
————————————————————————
F1: BEGIN ATOMIC
DECLARE tax DOUBLE;
–DECLARE salary DOUBLE;
set tax = (SELECT 0.1 * salary FROM STAFF where id=nip);
RETURN tax;
END

Berikut screen shoot dari Stored Procedure yang dibuat
Free Image Hosting at www.ImageShack.us

Berikut screen shoot dari UDF yang dibuat

Berikut screen shoot dari outputnya

Semoga bermanfaat.

This entry was posted in DB2 and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>