Rabu, 29 Oktober 2014

LOOP pada PL/SQL

Looping (pengulangan) adalah suatu blok yang memperbolehkan kita untuk mengulang statement-statement dalam sebuah blok PL/SQL. Statement-statement yang terdapat dalam sebuah blok looping akan terus dieksekusi selama kondisi yang didefinikan bernilai benar dan pengulangan akan berhenti jika kondisi bernilai salah.  Pada Oracle, terdapat tiga jenis looping, yaitu Basic Loop, FOR, dan WHILE

BASIC LOOPS

Basic Loop pada PL/SQL hampir sama logikanya dengan DO-WHILE pada Bahasa Prosedural yang lain, contonhnya pada bahasa C. Pada Basic Loop Minimal 1 kali Terjadi looping.
Syntax:
LOOP
statement1;
. . .
EXIT [WHEN condition];
END LOOP;
Contoh :
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
counter NUMBER(2) := 1;
new_city locations.city%TYPE := 'Montreal';
BEGIN
SELECT MAX(location_id) INTO loc_id FROM locations
WHERE country_id = countryid;

LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + counter), new_city, countryid);
counter := counter + 1;
EXIT WHEN counter > 3;
END LOOP;
END;
/

FOR LOOPS

FOR pada PL/SQL logikanya sama dengan FOR pada Bahasa Prosedural yang lain, contonhnya pada bahasa C. Dan kita menggunakan FOR LOOP ketika kita sudah mengetahui batas angka perulangannya
Syntax:
FOR counter IN [REVERSE]
lower_bound..upper_bound LOOP
statement1;
statement2;
. . .
END LOOP;
Contoh :
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
new_city locations.city%TYPE := 'Montreal';
BEGIN
SELECT MAX(location_id) INTO loc_id
FROM locations
WHERE country_id = countryid;

FOR i IN 1..3 LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + i), new_city, countryid );
END LOOP;
END;
/
Nb: bagi yang belum mengetahaui fungsi %TYPE silakan buka artikel Tipe Data Reference

WHILE LOOPS

Kita menggunakan WHILE LOOPS ketika kita ingin mengecek terlebih dahulu kondisi yang ada, baru kemudian lakukan looping sampai syaratnya tidak terpenuhi.
Syntax:
WHILE condition
statement1;
statement2;
. . .
END LOOP;
Contoh :
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
new_city locations.city%TYPE := 'Montreal';
counter NUMBER := 1;
BEGIN
SELECT MAX(location_id) INTO loc_id FROM locations
WHERE country_id = countryid;

WHILE counter <= 3 LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + counter), new_city, countryid);
counter := counter + 1;
END LOOP;
END;
/

daftar pustaka : http://risnotes.com/2012/02/looping-di-plsql/

Tidak ada komentar:

Posting Komentar