18
Modul ke: Fakultas Program Studi Penggunaan Struktur Kendali Pengulangan Pada PL/SQL Membuat aplikasi yang memiliki struktur kendali pengulangan Albaar Rubhasy, S.Si., M.T.I. 11 FASILKOM Sistem Informasi

Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Embed Size (px)

DESCRIPTION

Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Citation preview

Page 1: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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

Page 2: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Outline Perkuliahan

• LOOP Statement

• EXIT Statement

• EXIT-WHEN Statement

• Labeling a PL/SQL Loop

• WHILE-LOOP Statement

• FOR-LOOP Statement

Page 3: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Kendali Iteratif (LOOP dan EXIT)

• Pernyataan LOOP memungkinkan serangkaian pernyataan dijalankan secara berulang.

• Ada tiga tipe pernyataan LOOP:

– LOOP

– WHILE-LOOP

– FOR-LOOP

Page 4: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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.

Page 5: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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

Page 6: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;/

Page 7: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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.

Page 8: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;/

Page 9: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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.

Page 10: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;

/

Page 11: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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

Page 12: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;

/

Page 13: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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.

Page 14: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;

/

Page 15: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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;

/

Page 16: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

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

Page 17: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Referensi

• http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/controlstructures.htm#i8296

Page 18: Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Terima KasihAlbaar Rubhasy, S.Si., M.T.I.