Powerpoint pemrograman basis data & sql mg 11 fasilkom albaar rubhasy

Preview:

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.

Recommended