Upload
albaar-rubhasy
View
105
Download
1
Embed Size (px)
DESCRIPTION
Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy
Citation preview
Modul ke:
Fakultas
Program Studi
Penggunaan Struktur Kendali Pengulangan Pada PL/SQLMembuat aplikasi yang memiliki struktur kendali pengulangan
Albaar Rubhasy, S.Si., M.T.I.
11FASILKOM
Sistem Informasi
Outline Perkuliahan
• LOOP Statement
• EXIT Statement
• EXIT-WHEN Statement
• Labeling a PL/SQL Loop
• WHILE-LOOP Statement
• FOR-LOOP Statement
Kendali Iteratif (LOOP dan EXIT)
• Pernyataan LOOP memungkinkan serangkaian pernyataan dijalankan secara berulang.
• Ada tiga tipe pernyataan LOOP:
– LOOP
– WHILE-LOOP
– FOR-LOOP
LOOP Statement• Bentuk paling sederhana dari pernyataan loop dasar adalah
LOOP, yang melingkupi urutan pernyataan antara kata kunciLOOP dan END LOOP
• Bentuk umum:LOOP
sequence_of_statements
END LOOP;
• Pada setiap iterasi dari loop, urutan pernyataan dijalankan, kemudian mengendalikan lanjutan di bagian atas loop. Pernyataan EXIT digunakan untuk menghentikan perulangandan mencegah loop tak terbatas. pernyataan EXIT dapatditempatkan satu atau lebih di dalam loop, tetapi tidak di luarloop. Ada dua bentuk pernyataan EXIT: EXIT dan EXIT-WHEN.
EXIT Statement
• Pernyataan EXIT memaksa loop untukmenyelesaikan tanpa kondisi. Ketikapernyataan EXIT ditemui, loop selesai segeradan melewatkan kendali ke pernyataanberikutnya
• Pernyataan EXIT harus ditempatkan di dalamloop. Untuk menyelesaikan blok PL/SQL sebelum akhir normal tercapai, pernyataanRETURN dapat digunakan
Contoh EXIT StatementDECLARE
credit_rating NUMBER := 0;BEGIN
LOOPcredit_rating := credit_rating + 1;IF credit_rating > 3 THEN
EXIT; -- exit loop immediatelyEND IF;
END LOOP;-- control resumes hereDBMS_OUTPUT.PUT_LINE ('Credit rating: ' || TO_CHAR(credit_rating));IF credit_rating > 3 THEN
RETURN; -- use RETURN not EXIT when outside a LOOPEND IF;DBMS_OUTPUT.PUT_LINE ('Credit rating: ' || TO_CHAR(credit_rating));
END;/
EXIT-WHEN Statement
• Pernyataan EXIT-WHEN memungkinkan loop dilengkapi dengan kondisi. Ketika pernyataanEXIT ditemui, kondisi di klausa WHEN dievaluasi. Jika kondisi benar, loop selesai dankendali diteruskan ke pernyataan berikutnyasetelah loop.
Contoh EXIT-WHEN StatementDECLARE
total NUMBER(9) := 0;counter NUMBER(6) := 0;
BEGINLOOP
counter := counter + 1;total := total + counter * counter;-- exit loop when condition is trueEXIT WHEN total > 25000;
END LOOP;DBMS_OUTPUT.PUT_LINE('Counter: ' || TO_CHAR(counter) || ' Total: ' || TO_CHAR(total));
END;/
Labeling a PL/SQL Loop
• Loop dapat diberi label (opsional). Label opsional, sebuah identifier dideklarasikantertutup oleh kurung siku ganda(<<label>>) dan harus muncul pada awalpernyataan LOOP. Nama label juga bisa munculpada akhir pernyataan LOOP. Bila label loop bersarang, gunakan nama label untuk mengakhiri loop agar lebih mudah dibaca.
Contoh PL/SQL Loop LabelDECLARE
s PLS_INTEGER := 0;
i PLS_INTEGER := 0;
j PLS_INTEGER;
BEGIN
<<outer_loop>>
LOOP
i := i + 1;
j := 0;
<<inner_loop>>
LOOP
j := j + 1;
s := s + i * j; -- sum a bunch of products
EXIT inner_loop WHEN (j > 5);
EXIT outer_loop WHEN ((i * j) > 15);
END LOOP inner_loop;
END LOOP outer_loop;
DBMS_OUTPUT.PUT_LINE('The sum of products equals: ' || TO_CHAR(s));
END;
/
WHILE-LOOP Statement
• Pernyataan WHILE-LOOP mengeksekusi pernyataandalam tubuh loop selama kondisi benar
• Bentuk umum:
LOOP
sequence_of_statements
EXIT WHEN boolean_expression;
END LOOP;
• Sebelum setiap iterasi dari loop, kondisi dievaluasi. JikaTRUE, urutan pernyataan dijalankan, kemudianmengendalikan lanjutan di bagian atas loop. Jika SALAH atau NULL, loop dilewati dan kendali diteruskan kepernyataan berikutnya
Contoh WHILE-LOOP StatementCREATE TABLE temp (tempid NUMBER(6), tempsal NUMBER(8,2), tempname
VARCHAR2(25));
DECLARE
sal employees.salary%TYPE := 0;
mgr_id employees.manager_id%TYPE;
lname employees.last_name%TYPE;
starting_empid employees.employee_id%TYPE := 120;
BEGIN
SELECT manager_id INTO mgr_id FROM employees
WHERE employee_id = starting_empid;
WHILE sal <= 15000 LOOP -- loop until sal > 15000
SELECT salary, manager_id, last_name INTO sal, mgr_id, lname
FROM employees WHERE employee_id = mgr_id;
END LOOP;
INSERT INTO temp VALUES (NULL, sal, lname); -- insert NULL for
tempid
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO temp VALUES (NULL, NULL, 'Not found'); -- insert
NULLs
COMMIT;
END;
/
FOR-LOOP Statement
• FOR-LOOP sederhana iterasi selama rentang bilanganbulat tertentu. Jumlah iterasi diketahui sebelummasuk loop. Sebuah titik ganda (..) berfungsi sebagaioperator jangkauan. Rentang dievaluasi ketika FOR-LOOP pertama kali masuk dan tidak pernah dievaluasikembali. Jika batas bawah sama dengan batas yang lebih tinggi, tubuh loop hanya dijalankan sekali.
• Secara default, hasil iterasi ke atas (dari batas bawahke batas yang lebih tinggi). Jika digunakan kata kunciREVERSE, hasil iterasi ke bawah (dari batas yang lebihtinggi untuk batas bawah). Setelah setiap iterasi, loop counter dikurangi.
Contoh FOR-LOOP Statement
DECLARE
p NUMBER := 0;
BEGIN
FOR k IN 1..500 LOOP -- calculate pi with 500 terms
p := p + ( ( (-1) ** (k + 1) ) / ((2 * k) - 1) );
END LOOP;
p := 4 * p;
DBMS_OUTPUT.PUT_LINE( 'pi is approximately : ' || p ); -- print result
END;
/
Contoh FOR-LOOP Statement
BEGIN
FOR i IN REVERSE 1..3 LOOP -- assign the values 1,2,3 to i
DBMS_OUTPUT.PUT_LINE (TO_CHAR(i));
END LOOP;
END;
/
Quiz
• Buat program PL/SQL untuk menghitung faktorial dari sebuah bilangan
• n! = n x (n-1) x (n-2) x ... x 1, n 0
• Contoh:
5! = 5 x 4 x 3 x 2 x 1 = 120
Referensi
• http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/controlstructures.htm#i8296
Terima KasihAlbaar Rubhasy, S.Si., M.T.I.