Sabtu

Statement IF/Script Input Output

Statement IF

Penggunaan statemen IF dapat diklasifikasikan ke dalam tiga bagian, yaitu struktur untuk satu kondisi, dua kondisi, dan tiga kondisi atau lebih.

Satu Kondisi (IF-THEN)

IF kondisi THEN
statemen-statemen;
END IF;
Pada struktur ini, PL/SQL hanya akan mengecek sebuah kondisi. Apabila kondisi tersebut terpenuhi (bernilai TRUE) maka statemen-statemen dalam blok pemilihan tersebut akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen di bawah blok pemilihan. Akan tetapi bila kondisi tidak terpenuhi (bernilai FALSE) maka eksekusi akan langsung berpindah ke statemen di bawah blok pemilihan.

Dua Kondisi (IF-THEN-ELSE)



IF kondisi THEN
statemen-statemen A;
ELSE
statemen-statemen B;
END IF;

Pada struktur ini, perlu didefinikan kondisi khusus untuk mengatasi apabila kondisi yang didefinisikan pada blok IF tidak terpenuhi. Kondisi khusus tersebut diletakkan pada bagian ELSE.
Apabila kondisi IF terpenuhi (bernilai TRUE) maka statemen-statemen A akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen yang berada di bawah blok pemilihan. Bila kondisi IF tidak terpenuhi (bernilai FALSE) maka statemen-statemen B yang akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen yang berada di bawah blok pemilihan.

Tiga Kondisi atau Lebih Kondisi (IF-THEN-ELSIF)

IF kondisi_1 THEN
statemen-statemen A;
ELSIF kondisi_2 THEN
statemen-statemen B;
...
ELSIF kondisi_n THEN
statemen-statemen N;
[ELSE
statemen-statemen lain;]
END IF;

Pada struktur ini, minimal terdapat dua kondisi yang harus diperiksa dan satu tambahan kondisi khusus yang akan mengatasi kejadian dimana semua kondisi yang didefinisikan tidak terpenuhi (bernilai FALSE).
Mula-mula dilakukan pengecekan terhadap kondisi_1, jika TRUE maka statemen-statemen A akan dieksekusi dan kemudian mengeksekusi statemen yang berada di bawah blok pemilihan. Tapi bila FALSE maka akan dilakukan pengecekan selanjutnya untuk kondisi_2. Jika kondisi_2 TRUE maka statemen-statemen B akan dieksekusi sebelum statemen di bawah blok pemilihan dieksekusi, dan seterusnya. Apabila seluruh kondisi ELSIF tidak terpenuhi, maka statemen pada blok ELSE yang akan dieksekusi.

Contoh Penggunaan Statement IF

declare
nama varchar(50) := '&Nama';
harga_buku number(10) := '&HargaBuku' ;
diskon number(5) := '&Diskon';
total number(5);

begin
total := harga_buku - ((harga_buku*diskon)/100);
dbms_output.put_line('Selamat Datang');
dbms_output.put_line('Harga yang harus dibayar = Rp. '||total);

if (diskon < 20) then
dbms_output.put_line('Pelit amat sih');
elsif (diskon >= 20) or (diskon < 50) then dbms_output.put_line('Biasa aja ah');
else dbms_output.put_line('wah baik banget');
end if;
end;
/

declare
nama varchar(50) := '&Nama';
jenis_kelamin varchar(3) := '&JenisKelamin';
umur number(5) := '&Umur';
begin
      if (jenis_kelamin ='p') and (umur < 20) then
     dbms_output.put_line('mba '||nama||' Belajar yang bener'); 
       elsif (jenis_kelamin ='p') and (umur > 60) then
     dbms_output.put_line('mba '||nama||' Inget mati');
        elsif (jenis_kelamin ='p') and (umur >= 20) and (umur <= 60) then
     dbms_output.put_line('mba '||nama||' Buruan nikah bisi expired!');
        elsif (jenis_kelamin ='l') and (umur < 25) then
     dbms_output.put_line('mas '||nama||' Belajar yang bener'); 
        elsif (jenis_kelamin ='l') and (umur > 60) then
     dbms_output.put_line('mas '||nama||' inget mati');
       elsif (jenis_kelamin ='l') and (umur >= 25) and (umur <= 60) then
     dbms_output.put_line('mas '||nama||' Buruan nikah bisi expired!');
    end if;
end;


Script Input Output 

 Blok PL/SQL secara umum terdiri atas tiga bagian :

DECLARE
-- berisi deklarasi variable, konstanta,
-- prosedur, ataupun fungsi
BEGIN
-- berisi statemen-statemen yang akan dieksekusi
EXCEPTION
-- berisi perintah untuk mengatasi kesalahan
-- yang mungkin muncul
END;
Blok DECLARE dan EXCEPTION bersifat opsional, hanya dituliskan saat dibutuhkan. Bagian yang wajib adalah BEGIN dan END.


1. Script menghitung keliling & luas lingkaran
declare
jari2 number(5,2);
keliling number(7,2);
luas number(7,2);



begin
jari2 := &jari2;
keliling := 2*3.14*jari2;
luas := 3.14*power(jari2,2);
dbms_output.put_line('Jari-jari lingkaran = '||jari2);
dbms_output.put_line('keliling lingkaran = '||keliling);
dbms_output.put_line('luas lingkaran = '||luas);

end;

/
Hasil output:






 




2.  Script untuk mengubah format tanggal sysdate(tanggal yang di set di komputer)
declare

begin
dbms_output.put_line('Sekarang tanggal: '||sysdate);
dbms_output.put_line('Sekarang hari '||to_char(sysdate,'DAY')||' tanggal '||to_char(sysdate,'DD')||' bulan '||to_char(sysdate,'MM')||' tahun'||to_char(sysdate,'YY'));

end;
/




 
3.    Script untuk menghitung umur seseorang 5 tahun yang akan datang
declare
a varchar(20);
b number(2);
c number(2);

begin
a:='&nama';
b:=&umur;
c:=b+5;
dbms_output.put_line('Hai, nama saya '||a);
dbms_output.put_line('5 tahun lagi umur saya:' ||c||'tahun');

end;
/




IMPLISIT dan EKSPLISIT

PL/SQL menggunakan dua tipe cursor: implisit dan eksplisit. PL/SQL mendeklarasikan cursor secara implisit untuk seluruh perintah-perintah manipulasi data SQL, termasuk query-query yang hanya menghasilkan satu baris data. Namun, untuk query-query yang menghasilkan lebih dari satu baris data, kita harus mendeklarasikan cursor eksplisit, menggunakan cursor FOR loop, atau menggunakan klausa BULK COLLECT.
Explicit Cursors 
Kumpulan baris-baris data yang dihasilkan oleh query dapat terdiri dari nol, satu, atau banyak baris data, bergantung pada berapa banyak baris-baris data yang sesuai dengan kriteria pencarian yang kita inginkan. Ketika query menghasilkan banyak baris data, kita dapat secara eksplisit mendeklarasikan cursor untuk memproses baris-baris data tersebut. Lebih luas lagi, kita dapat mendeklarasikan cursor di dalam bagian deklaratif dari suatu blok PL/SQL, subprogram, atau package.
Kita menggunakan tiga perintah untuk mengontrol cursor: OPEN, FETCH, dan CLOSE. Pertama, kita menginisialisasi cursor dengan perintah OPEN, yang mana mengidentifikasi result set. Kemudian, kita dapat mengeksekusi FETCH secara berulang-ulang sampai seluruh baris-baris data ditampilkan, atau kita dapat menggunakan klausa BULK COLLECT untuk menampilkan seluruh baris-baris data sekali saja. Ketika baris data terakhir selesai diproses, kita membebaskan cursor dengan perintah CLOSE. Kita dapat memproses beberapa query di secara paralel dengan mendeklarasikan dan membuka beberapa cursor.

Cursor merupakan suatu variabel yang digunakan untuk menampung hasil query yang terdiri atas lebih dari satu row atau record. Cursor dapat diilustrasikan sebagai penampung sekaligus pointer atas hasil eksekusi query.
Cursor dibagi menjadi dua macam, yaitu :
· Cursor Implisit
· Cursor Eksplisit
1. Cursor Implisit
Cursor Implisit merupakan cursor yang tidak memerlukan deklarasi terlebih dahulu (tidak bernama). Cursor ini harus menghasilkan satu baris record.
Cursor implisit merupakan cursor yang tidak perlu dideklarasikan sebelumnya. Cursor ini berasosiasi dengan perintah SELECT, INSERT, DELETE, dan UPDATE.
Contoh cursor Implisit :
select first_name, last_name, department_name
from employees e join departments d
on e.department_id=d.department_id
where d.department_id=50;
2. Cursor Eksplisit
Statement declare
àMerupakan deklarasi nama cursor dan definisi struktur query yang akan dilakukan di dalamnya.
CURSOR nama_cursor IS query
Contoh:
DECLARE
CURSOR CUR1 IS SELECT nim, nama, alamat FROM mahasiswa
Statement open
à Sebelum suatu cursor dapat digunakan, cursor harus dibuka terlebih dahulu.
OPEN nama_cursor;
Contoh:
OPEN CUR1;
Statement fetch
à Fetch merupakan perintah untuk mengambil isi cursor, dimana isi dari cursor tersebut adalah hasil query yang telah dideklarasikan pada statement deklarasi cursor.
FETCH nama_cursor INTO ;
Contoh:
FETCH CUR1 INTO v_nim, v_nama, v_alamat;
Statement close
à Setelah pemrosesan query selesai, cursor harus ditutup dengan statemen CLOSE .
CLOSE nama_cursor;
Contoh:
Close CUR1;
Contoh Cursor Eksplisit :
Tampilkan first name , last name dari tabel employees dan nama department yang id department diinputkan oleh user.
jawab :
declare
rata number;
total number;
jum number;
cursor cursor1 is
select first_name, last_name, salary, department_name
from employees e join departments d
on e.department_id=d.department_id
where d.department_id=&input_kode_department;
vrec cursor1%rowtype;
begin
open cursor1;
dbms_output.put_line('=======================================================');
dbms_output.put_line('NO NAME DEPARTMENT NAME SALARY');
dbms_output.put_line('=======================================================');
total:=0;
loop
fetch cursor1 into vrec;
exit when cursor1%notfound;
dbms_output.put_line(rpad(cursor1%rowcount,5,' ')||
rpad(vrec.first_name||' '||vrec.last_name,19,' ')||
rpad(vrec.department_name,25,' ')||
lpad(vrec.salary,6,' '));
total:=total+vrec.salary;
end loop;
rata:=total/cursor1%rowcount;
jum:=cursor1%rowcount;
dbms_output.put_line('=======================================================');
dbms_output.put_line('Jumlah record : '||jum);
dbms_output.put_line('Total salary : '||total);
dbms_output.put_line('Rata - rata salary : '||rata);
close cursor1;
end;
/

Lanjutan Prosedural LOOP

PERNYATAAN LOOP



Pernyataan LOOP berguna untuk melakukan pengulangan. Bentuknya:
[ awal_label : ] LOOP
Statement_list
END LOOP [ akhir_label ]
Daftar pernyataan yang berada antara LOOP dan END LOOP akan terus dieksekusi sampai ada suatu pernyataan untuk keluar pengulangan dieksekusi. Dalam hal ini, pernyataan yang digunakan untuk keluar pengulangan berupa pernyataan LEAVE. Contoh berikut menunjukkan penggunaan LOOP dan LEAVE. 
DELIMITER//
CREATE PROSEDUR tes_loop( )
BEGIN
DECLARE pencacah INT;
SET pencacah = 0;

SELECT CONCAT (‘Nilai awal pencacah : ’ , pencacah);
Ulang : LOOP
SET pencacah = pencacah + 1;
IF pencacah > 10 THEN LEAVE ulang; END IF;
END LOOP ulang;
SELECT CONCAT (‘Nilai akhir pencacah : ’ , pencacah);
END
/

Contoh 1 lain dari loop:
Declare
a number;
i number;

begin
i:=0;
a:=&masukkan_angka;
loop
 i:=i+1;
if(i>=a) then
 exit;
 else if mod(i,2)=0 then
dbms_output.put_line(i);
end if;
end if;
end loop;
end;
/
Contoh2;
declare
a number;
i number;
begin
a:=&masukkan _anggak;
i:=1 ;
while i<a loop
            if mod(i,2)=0 then
            dbms_output.put_line(i);

            end if;
            i:=i+1;
end loop;
end;

/i:=i+1;
Contoh 3:
Declare
a number;
i number;

begin
i:=0;
a:=&masukkan_angka;

loop
 i:=i+1;
if(i>=a) then
 exit;
 else if mod(i,2)=0 then
dbms_output.put_line(i);
end if;
end if;
end loop;
end;
/

DELIMITER;
Pada prosedur tes_loop, variable pecahan dideklarasikan sebagai variable local yang bertipe INT. Mula-mula variable tersebut diiisi dengan 0. Selanjutnya, pernyataan
SELECT CONCAT ( ‘Nilai awal pecahan : ‘, pecahan ) ;
Digunakan untuk menampilkan tulisan ‘Nilai awal pecahan : ‘diikuti dengan isi variable pecahan.
Pernyataan LOOP digunakan untuk mengeksekusi pernyataan-pernyataan yang ada didalamnya secara terus-menerus, sampai ada perintah untuk keluar dari pernyetaan tersebut.
Pernyataan yang ada dalam LOOP yang pertama adalah
SET pecahan = pecahan + 1 ;
Pernyataan tersebut untuk menaikkan isi variable pecahan sebesar 1.
Pernyataan kedua
IF pecahan > 10 THEN LEAVE ulang ; END IF ;
Digunakan untuk LEAVE saat variable pecahan bernilai 11 (yakin ketika kondisi pecahan > 10 bernilai benar). Ketika LEAVE dijalankan, Pengulangan menjadi berakhir. Dengan demikian, pernyataan selanjutnya yang dieksekusi adalah
SELECT CONCAT ( ‘ Nilai akhir pecahan : ‘, pecahan ) ;
Pernyataan REPEAT
Seperti halnya LOOP, pernyataan REAPET juga berguna untuk melakukan pengulangan. Bentuknya:
[awal_label :] REAPET
Daftar pernyataan
UNTIL kondisi_pengulangan
END REAPET [ akhir_label ]
Pada pernyataan ini, bagian daftar_pernyataan akan dieksekusi terus-menerus sampai kondisi_pengulangan benilai benar (TRUE). 
DECLARE pecahan INT DEFAULT 0 ;
Digunakan untuk mendeklarasikan variable local pertama pecahan yang bertipe INT dan diberi nilai awal sebesar 0.
Pernytaan REAPET digunakan untuk menjalankan pernyataan 
SET pecahan = pecahan + 1 ;
Sampai kondisi pecahan > 10 bernilai benar. Kondisi ini tercapai saat pecahan bernilai 11.
Pernyataan WHILE
Pernyataan WHILE juga digunakan untuk melakukan pengulangan terhadap sejumlah pernyataan. Bentuknya adalah:
[ awal_label : ] WHILE kondisi_pengulangan DO
daftar_pernyataan
END WHILE [ akhir_label ]
Berada dengan LOOP atau REAPET, WHILE akan menguji kondisi_pengulangan terlebih dulu.Selama kondisi tersebut bernilai benar, bagian daftar_pernyataan akan dieksekusi secara terus-menerus. Berikut contoh penggunaan pernyataan WHILE.
DELIMITER//
CREATE PROSEDUR tes_while( )
BEGIN
DECLARE pencacah INT;
SET pencacah = 0;
SELECT CONCAT (‘Nilai awal pencacah : ’ , pencacah);
WHILE pencacah < 11 DO
SET pencacah = pencacah + 1;
END WHILE;
SELECT CONCAT (‘Nilai akhir pencacah : ’ , pencacah);
END
/

Rabu

REDAKSI CIMOL



Terdiri dari :
> Novia Liestarini ( Jakarta )
> Rani Maisa Noviana ( Riau)
> Irfan Hardiansyah ( Makassar)
> Nindy Ayu Valentina ( Madura)
> Ahmad Ikhsan Ramadhan ( Bogor)
> Dian Lupita Herman ( Makassar)
> Putri seroja ( Medan)

Editing : by Irfan Hardiansyah

FILM TERBARU 1 Cinta 2 Hati


Model : Putri Seroja,Dian Lupita Herman,Novia Liestarini
Fotograper : by Irwanda Saputra
Editing : by Irfan Hardiansyah

Kamis

Hanya Bertiga ! ! !

neh fto pas WEBPRO,hahaha
kurang kerjaan bgt yah ! ! !
tp,never mind lah. .yg penting Narsis..hahahha

apa lagii sii Franki. . .Jamal ma cman Figuran doank. .h h i :p

SIMPLE ANONYMOUS PL/SQL

Panduan:
1. Bagian declare diisi dengan daftar variabel dan tipe datanya masing-masing
2. Bagian inti program selalu diawali dengan BEGIN dan diakhiri dengan END; serta /
3. PL/SQL dapat disimpan sebagai file *.sql dan di-run sebagai script dengan perintah @ fullpath, dimana fullpath tidak boleh mengandung spasi
contoh: @ D:\BelajarOracle\Pertemuan3\anu.sql;
4. Jika blok PL/SQL menmapilkan output ke layar maka setelah login kita harus mengaktifkan screen output dengan cara menjalankan perintah SET SERVEROUTPUT ON setelah login (cukup satu kali tiap login)
5. Aturan nama variabel: tidak boleh pakai spasi, diawali selain huruf atau mengandung simbol tanda baca

Format Deklarasi Variabel:
Nama_Var Tipe_data;
atau
Nama_Var Nama_Tabel.Nama_Kolom%Type;

Format Pembacaan Single Row Data:
SELECT daftar_kolom
INTO daftar_variabel
FROM daftar_tabel
WHERE syarat;

(*) Format di atas tidak bisa digunakan jika hasil query lebih dari 1 baris, kecuali jika dilengkapi dengan exception

Format Penerimaan Input Dari User:
Nama_Var := &prompt;
atau
Nama_Var := ‘&prompt’;

Note: Prompt bebas namun tidak boleh menggunakan spasi dan simbol selain alfanumerik. Jika Input bertipe selain tipe data number maka &prompt harus diapit petik tunggal (‘)

Contoh1: Menerima input jari-jari dan menampilkan luas serta keliling lingkaran
Declare
jari2 number(5,2);
keliling number(7,2);
luas number(7,2);

begin
jari2 := &jari2;
keliling := 2 * 3.14 * jari2;
luas := 3.14 * power(jari2,2);
dbms_output.put_line('Jari-jari lingkaran = '||jari2);
dbms_output.put_line('keliling lingkaran = '||keliling);
dbms_output.put_line('luas lingkaran = '||luas);
end;
/
Contoh2: Menerima input nama anggota dan menampilkan alamatnya
Declare
cari varchar(30);
nama anggota.nama_anggota%type;
alamat anggota.alamat_anggota%type;

begin
cari := '&nama_yang_dicari';
select nama_anggota, alamat_anggota
into nama, alamat
from anggota
where nama_anggota = cari;
dbms_output.put_line(nama||' tinggal di '||alamat);
end;
/

PL/SQL WITH CONDITIONAL

IF... THEN...
IF... THEN... ELSE...
IF... THEN... ELSIF... ELSE...

PL/SQL WITH LOOPING

FOR... LOOP
WHILE... LOOP
LOOP... EXIT WHEN...