1. Pengulangan/looping pada PL/SQL ada 3 yaitu
a. LOOP-EXIT STATEMENT
sintax: LOOP
statement;
.................;
EXIT [WHEN kondisi];
END LOOP;
atau
LOOP
statement;
..................;
IF [kondisi] THEN EXIT;
END LOOP;
contoh:
declare v_ab char(6):='danang'; v_hit number:=1; begin loop dbms_output.put_line(v_ab); v_hit:=v_hit+1; if v_hit > 5 then exit; end if; end loop; end; /
b. WHILE-LOOP STATEMENT
sintax: WHILE kondisi LOOP
statement;
..................;
END LOOP;
contoh:
declarev_ab char(9):='113070262';
v_hit number:=1;
beginwhile v_hit<=5 loop
dbms_output.put_line(v_ab);v_hit:=v_hit+1;end loop;
end;/
c. FOR-LOOP STATEMENT
sintax: FOR variable-control IN nilaimin..nilaimax
LOOP
statement;
..................;
END LOOP;
contoh:
declare
v_ab char(7):='ganteng';v_hit number;
begin
for v_hit in 1..5loopdbms_output.put_line(v_ab);end loop;end;
/
2. PL/SQL untuk menampilkan jam pasir
declaren number:='&113070262';i number;j number;
beginfor i in 1..nloopfor j in 1..nloopif (j>=i and j<=n-i+1) or (j<=i and j>=n-i+1) thendbms_output.put('#');elsedbms_output.put('-');end if;end loop;dbms_output.put_line(chr(13));dbms_output.put_line(chr(13));end loop;end;/
3. xxxxxx
4. Cursor (dalam konteks database) adalah sebuah kerja dalam memory dimana ORACLE meletakkan current SQL statement. Cursor merupakan variabel yang menunjukkan basis data hasil sebuah query.
Kegunaan cursor:
a. Menerima hasil query yang jumlah barisnya lebih dari satu.
b. Memungkinkan untuk melakukan proses yang lebih kompleks untuk tiap record.
5. sintax untuk jawaban ini
DECLAREvidsek Sekolah.id_sekolah%type := upper('&113070262');vnama_sekolah Sekolah.nama%TYPE;v_a Calon_Peserta.NIS%TYPE;v_b Calon_Peserta.Nama%TYPE;CURSOR c1 IS SELECT NIS, Nama FROM Calon_PesertaWHERE ID_Sekolah = vidsek;BEGINOPEN c1;SELECT Nama INTO vnama_sekolah FROM SekolahWHERE ID_Sekolah = vidsek;dbms_output.put_line('Calon Peserta dari Sekolah ' || vnama_sekolah || ' adalah: ');dbms_output.put_line('NO===NIS=== ====NAMA====');LOOPFETCH c1 INTO v_a,v_b;EXIT WHEN c1%NOTFOUND;dbms_output.put_line(c1%ROWCOUNT || '. ' || v_a || ' ' || v_b);END LOOP;dbms_output.put_line('Jumlah Peserta adalah: ' || c1%ROWCOUNT);CLOSE c1;END;/
/
6. sintax jawaban
DECLAREvnamalok lokasi_ujian.nama_lokasi%type := '&113070262';v_nama Panitia.Nama%TYPE;v_jabatan Panitia.Jabatan%TYPE;v_telepon Panitia.No_Telp%TYPE;CURSOR c1 IS SELECT Panitia.Nama, Panitia.Jabatan, Panitia.No_Telp, vnamalok FROM Panitia, Lokasi_ujianWHERE Panitia.kode_lokasi = Lokasi_Ujian.kode_lokasi AND Lokasi_Ujian.Nama_Lokasi = vnamalok;BEGINOPEN c1;dbms_output.put_line('Panitia di ' || vnamalok || ' adalah : ');LOOPFETCH c1 INTO v_nama, v_jabatan, v_telepon, vnamalok;EXIT WHEN c1%NOTFOUND;dbms_output.put_line(c1%ROWCOUNT || '. ' || v_nama || ' menjabat sebagai ' || v_jabatan || ', telp : ' || RPAD(v_telepon,length(v_telepon)-2) || 'XX');END LOOP;dbms_output.put_line('Jumlah panitia adalah: ' || c1%ROWCOUNT);CLOSE c1;END;/
Semoga membantu. :)
No comments:
Post a Comment