Cursor adalah suatu variable dalam blok PL/SQL yang tidak mengijinkan seorang programer membuat query yang menghasilkan lebih dari satu baris untuk ditampung di dalam nya. Cursor ada 2 macam yaitu :
a. Cursor Eksplisit : Cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan, sedangkan
b. Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulu pada declare section. contoh cursor implisit diasosiasikan dengan perintah SELECT, INSERT, DELETE, dan UPDATE.
Bentuk Umum Sintaksnya :
DOFC (DECLARE, OPEN, FETCH, CLOSE)
Declare
cursor [nama_cursor_bebas] is
select [daftar_kolom]
from [daftar_tabel]
where [syarat];
begin
open [nama_cursor_bebas];
loop
fetch [nama_cursor_bebas] into [daftar_variabel];
exit when [nama_cursor_bebas] %notfound;
[aksi_lain]
end loop;
close [nama_cursor_bebas];
end;
/
Contoh dengan menggunakan Cursor Eksplisit:
1. Memunculkan Nama Depan, Email, No.Telepon dari sebuah karyawan yang berada di tabel HR
declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
email employees.email%type;
nomor_telepon employees.phone_number%type;
cursor jojo is
select first_name, email, phone_number
from employees
where first_name=nama_cari;
begin
nama_cari:='&masukkan_nama';
open jojo;
loop
fetch jojo into nama_depan,email,nomor_telepon;
exit when jojo%notfound;
dbms_output.put_line('Nama : '||nama_depan);
dbms_output.put_line('Email : '||email||'');
dbms_output.put_line('Nomor Telepon : '||nomor_telepon);
end loop;
close jojo;
end;
2. Contoh dengan menggunakan Cursor Implisit :
Memunculkan Nama Depan, Pekerjaan, Gaji dari sebuah karyawan yang berada di tabel HR
eclare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
pekerjaan jobs.job_title%type;
gaji employees.salary%type;
begin
nama_cari:='&masukkan_nama';
select first_name, job_title,salary
into nama_depan,pekerjaan,gaji
from employees e join jobs j
on(e.job_id=j.job_id)
where first_name=nama_cari;
dbms_output.put_line('Nama '||nama_depan|| ' Mempunyai Pekerjaan ' ||pekerjaan||' Dengan Gaji USD '||gaji);
end;
/
Monday, October 25, 2010
Saturday, October 23, 2010
PROSEDURAL PENGULANGAN LOOP
PENGGUNAAN LOOP
Struktur penggunaan LOOP ini digunakan bila diinginkan minimal iterasi dijalankan satu kali. Dalam struktur ini harus ditambahkan statement EXIT WHEN untuk menghindari eksekusi tak terbatas (infinitif).
Struktur penggunaan LOOP :
LOOP
Statement-statement;
END LOOP
Statement FOR
Statement for tidak memiliki kondsi sehingga perlu didefenisikan indeks minimal dan maksimal sebagai batas iterasi. Umumnya struktur ini digunakan untuk iterasi yang banyaknya sudah diketahui dengan pasti.
Struktur penggunaan FOR :
FOR Var IN [REVERSE] indeks_min .. indeks_max LOOP
statement-statemen;
END LOOP;
Statement WHILE
Struktur ini selalu memeriksa kebenaran kondisi di awal blok iterasi. Bila kondisi bernilai FALSE, maka statemen-statemen dalam blok iterasi tidak akan dieksekusi.
Struktur penggunaan WHILE :
WHILE kondisi LOOP
statemen-statemen;
END LOOP;
Statemen EXIT dan EXIT WHEN
kedua statatemen ini digunakan untuk keluar dari blok iterasi tanpa melanjutkan proses yang sedang dilakukan.
Struktur penggunaan EXIT dan EXIT WHEN
EXIT WHEN kondisi;
atau
IF kondisi THEN
EXIT;
END IF;
CONTOH :
1. Perintah LOOP
Contoh :
Declare
i number(3);
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
/
Outputnya :
2. Perintah FOR ….. LOOP
Contoh 1.
Tanpa inputan :
Declare
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
Outputnya :
Contoh2.
Dengan menggunakan inputan :
Declare
X number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
Outputnya :
Contoh 3.
Dengan menggunakan Inputan
Declare
x number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
if mod(i,2) = 1 then
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
else
DBMS_OUTPUT.PUT_LINE('Ini angka ' || ‘i’ );
end if;
END LOOP;
END;
Outputnya :
Contoh 4. Dengan menggunakan Inputan :
Declare
x number(3);
BEGIN
x:=&berapa;
FOR i IN 1..x LOOP
if mod(x,2) = 1 then DBMS_OUTPUT.PUT_LINE('proses'); else
DBMS_OUTPUT.PUT_LINE('lewat' );
end if;
END LOOP;
END;
Outputnya :
Contoh 5. Dengan menggunakan Inputan :
Declare
X number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
if mod(i,2) = 1 then
for a in 1..i loop
DBMS_OUTPUT.PUT_LINE(a);
end loop;
else
DBMS_OUTPUT.PUT_LINE('lewat');
end if;
END LOOP;
END;
Outputnya :
Contoh 6. Dengan menggunakan Inputan :
Declare
b number(3);
BEGIN
b:=&berapa;
FOR i IN 1..b LOOP
if mod(i,2) = 1 then
for a in 1..i loop
DBMS_OUTPUT.PUT_LINE(a);
end loop;
end if;
END LOOP;
END;
Outputnya :
3 . Perintah WHILE .... LOOP
Contoh 1. Tanpa inputan :
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN i:=1;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 2. Tanpa inputan
DECLARE
hasil NUMBER(5);
i NUMBER (3);
BEGIN i:=1;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 3. Tanpa inputan :
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN
i:=10;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 4. Tanpa inputan
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN
i:=10;
WHILE i <= 10 LOOP
i := i + 1;
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
END LOOP;
END;
Outputnya :
4. PERINTAH LOOP…..EXIT WHEN
Contoh 1.
Tanpa inputan :
DECLARE
total NUMBER(9);
counter NUMBER(6);
BEGIN
total := 0;
counter := 10;
LOOP
total := total + counter;
DBMS_OUTPUT.PUT_LINE(' Total: ' || total);
EXIT WHEN total > 50;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Counter: ' || counter);
END;
Outputnya :
Contoh 2.
Tanpa inputa :
DECLARE
total NUMBER(9);
counter NUMBER(6);
BEGIN
total := 0;
counter := 10;
LOOP
total := total + counter;
EXIT WHEN total > 50;
DBMS_OUTPUT.PUT_LINE(' Total: ' || total);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Counter: ' || counter);
END;
Outputnya :
Thanks You....
Tolong Komentarnya yah.....
Struktur penggunaan LOOP ini digunakan bila diinginkan minimal iterasi dijalankan satu kali. Dalam struktur ini harus ditambahkan statement EXIT WHEN untuk menghindari eksekusi tak terbatas (infinitif).
Struktur penggunaan LOOP :
LOOP
Statement-statement;
END LOOP
Statement FOR
Statement for tidak memiliki kondsi sehingga perlu didefenisikan indeks minimal dan maksimal sebagai batas iterasi. Umumnya struktur ini digunakan untuk iterasi yang banyaknya sudah diketahui dengan pasti.
Struktur penggunaan FOR :
FOR Var IN [REVERSE] indeks_min .. indeks_max LOOP
statement-statemen;
END LOOP;
Statement WHILE
Struktur ini selalu memeriksa kebenaran kondisi di awal blok iterasi. Bila kondisi bernilai FALSE, maka statemen-statemen dalam blok iterasi tidak akan dieksekusi.
Struktur penggunaan WHILE :
WHILE kondisi LOOP
statemen-statemen;
END LOOP;
Statemen EXIT dan EXIT WHEN
kedua statatemen ini digunakan untuk keluar dari blok iterasi tanpa melanjutkan proses yang sedang dilakukan.
Struktur penggunaan EXIT dan EXIT WHEN
EXIT WHEN kondisi;
atau
IF kondisi THEN
EXIT;
END IF;
CONTOH :
1. Perintah LOOP
Contoh :
Declare
i number(3);
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
/
Outputnya :
2. Perintah FOR ….. LOOP
Contoh 1.
Tanpa inputan :
Declare
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
Outputnya :
Contoh2.
Dengan menggunakan inputan :
Declare
X number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
Outputnya :
Contoh 3.
Dengan menggunakan Inputan
Declare
x number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
if mod(i,2) = 1 then
DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
else
DBMS_OUTPUT.PUT_LINE('Ini angka ' || ‘i’ );
end if;
END LOOP;
END;
Outputnya :
Contoh 4. Dengan menggunakan Inputan :
Declare
x number(3);
BEGIN
x:=&berapa;
FOR i IN 1..x LOOP
if mod(x,2) = 1 then DBMS_OUTPUT.PUT_LINE('proses'); else
DBMS_OUTPUT.PUT_LINE('lewat' );
end if;
END LOOP;
END;
Outputnya :
Contoh 5. Dengan menggunakan Inputan :
Declare
X number(3);
BEGIN
X:=&berapa;
FOR i IN 1..x LOOP
if mod(i,2) = 1 then
for a in 1..i loop
DBMS_OUTPUT.PUT_LINE(a);
end loop;
else
DBMS_OUTPUT.PUT_LINE('lewat');
end if;
END LOOP;
END;
Outputnya :
Contoh 6. Dengan menggunakan Inputan :
Declare
b number(3);
BEGIN
b:=&berapa;
FOR i IN 1..b LOOP
if mod(i,2) = 1 then
for a in 1..i loop
DBMS_OUTPUT.PUT_LINE(a);
end loop;
end if;
END LOOP;
END;
Outputnya :
3 . Perintah WHILE .... LOOP
Contoh 1. Tanpa inputan :
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN i:=1;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 2. Tanpa inputan
DECLARE
hasil NUMBER(5);
i NUMBER (3);
BEGIN i:=1;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 3. Tanpa inputan :
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN
i:=10;
WHILE i <= 10 LOOP
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
i := i + 1;
END LOOP;
END;
Outputnya :
Contoh 4. Tanpa inputan
DECLARE
i NUMBER(3);
hasil NUMBER(5);
BEGIN
i:=10;
WHILE i <= 10 LOOP
i := i + 1;
hasil := i**3;
DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
END LOOP;
END;
Outputnya :
4. PERINTAH LOOP…..EXIT WHEN
Contoh 1.
Tanpa inputan :
DECLARE
total NUMBER(9);
counter NUMBER(6);
BEGIN
total := 0;
counter := 10;
LOOP
total := total + counter;
DBMS_OUTPUT.PUT_LINE(' Total: ' || total);
EXIT WHEN total > 50;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Counter: ' || counter);
END;
Outputnya :
Contoh 2.
Tanpa inputa :
DECLARE
total NUMBER(9);
counter NUMBER(6);
BEGIN
total := 0;
counter := 10;
LOOP
total := total + counter;
EXIT WHEN total > 50;
DBMS_OUTPUT.PUT_LINE(' Total: ' || total);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Counter: ' || counter);
END;
Outputnya :
Thanks You....
Tolong Komentarnya yah.....
Tuesday, October 12, 2010
Trik Mempercepat Modem Untuk Semua Model
Cara Pertama
1. Dari Control Panel, klik icon Modem.
2. Pada kotak dialog Modem Properties, pilih modem yang akan diubah settingnya dan klik pada tombol Properties
3. Pada tab General, ubah Maximum Speed menjadi 115200
4. Pindah ke tab Connection dan klik tombol Port Setting.
5. Dari kotak dialog Advanced Port Setting, beri tanda check pada Use FIFO buffers. Kemudian ubah Receive Buffer menjadi 14 dan Transmit Buffer menjadi 16. Lalu klik OK.
6. Klik button Advanced, beri tanda check pada Use Flow Control.
7. Kemudian pilih radio button Hardware. Pada bagian Extra Setting, isi dengan &C1&D2E1Q0V1X4%C0 S7=55 S11=55 S0=0.
Cara Kedua
1. Dari Control Panel, klik icon System.
2. Pindah ke tab Device Manager.
3. Pada bagian Ports (COM & LPT), pilih port yang digunakan oleh modem Anda dan klik tombol Properties.
4. Pindah ke tab Port Settings.
5. Pada bagian Bits per second, isi dengan 921600.
Cara Ketiga
1. Buka file system.ini yang terletak di C:Windows.
2. Pada bagian [386Enh], tambahkan dengan COM1Buffer=16384. Ubah COM1 dengan port yang digunakan oleh modem.
sumber : http://www.iklan-mudah.com/techtrick/Trik-dan-Tips-Mempercepat-Modem-Semua-Model
1. Dari Control Panel, klik icon Modem.
2. Pada kotak dialog Modem Properties, pilih modem yang akan diubah settingnya dan klik pada tombol Properties
3. Pada tab General, ubah Maximum Speed menjadi 115200
4. Pindah ke tab Connection dan klik tombol Port Setting.
5. Dari kotak dialog Advanced Port Setting, beri tanda check pada Use FIFO buffers. Kemudian ubah Receive Buffer menjadi 14 dan Transmit Buffer menjadi 16. Lalu klik OK.
6. Klik button Advanced, beri tanda check pada Use Flow Control.
7. Kemudian pilih radio button Hardware. Pada bagian Extra Setting, isi dengan &C1&D2E1Q0V1X4%C0 S7=55 S11=55 S0=0.
Cara Kedua
1. Dari Control Panel, klik icon System.
2. Pindah ke tab Device Manager.
3. Pada bagian Ports (COM & LPT), pilih port yang digunakan oleh modem Anda dan klik tombol Properties.
4. Pindah ke tab Port Settings.
5. Pada bagian Bits per second, isi dengan 921600.
Cara Ketiga
1. Buka file system.ini yang terletak di C:Windows.
2. Pada bagian [386Enh], tambahkan dengan COM1Buffer=16384. Ubah COM1 dengan port yang digunakan oleh modem.
sumber : http://www.iklan-mudah.com/techtrick/Trik-dan-Tips-Mempercepat-Modem-Semua-Model
Saturday, October 9, 2010
STRUKTUR BLOCK ANONYMOUS PL / SQL
2. Save as (tempat dokumen pengen disimpan
3. Pilih type All Files pada saat menyimpan
4. Ekstensi filenya (…….*sql)
Anonymous Block ( Blok
Anonimous)
Anonymous Block ( Blok
Anonimous) yaitu blok yang tidak ada nama dan tidak disimpan dalam database
ataupun dalam skema.
Struktur script blok anonymous PL / SQL
Declare
……… deklarasi variabel
Begin
…… prosedural dan SQL masuk disini
End;
1. Hitunglah keliling sebuah segitiga yang
mempunyai alas = 12 cm dan tinggi = 7 cm …….
Jawab :
declare
a number;
t number;
luas number;
begin
a:=12;
t:=7;
luas:=a*t*0.5;
dbms_output.put_line('alas
adalah '||a||'cm');
dbms_output.put_line('tinggi
adalah '||t||'cm');
dbms_output.put_line('luas
segitiga adalah '||luas||'cm2');
end;
NB : apabila saat pengeksekusian program yang kita lakukan berhasil
tetapi tidak mengeluarkan OUTPUT maka yang kita lakukan adalah dengan
mengetikkan kalimat berikut :
“SET SERVEROUTPUT ON ;”
Atau dapat kita lihat seperti gambar berikut :
declare
a number;
t number;
luas number;
begin
a:=&nilai_alas ;
t:=&nilai_tinggi ;
luas:=a*t*0.5;
dbms_output.put_line('alas adalah '||a||'cm');
dbms_output.put_line('tinggi adalah '||t||'cm');
dbms_output.put_line('luas segitiga adalah
'||luas||'cm2');
end;
Hasil pengeksekusian akan tampak seperti
gambar berikut :
1. buatlah
soal pl/sql blok anonymus untuk menghitung total bayar, apabila di inputkan
jumlah barang (bilangan bulat) dan harga barang.
Output tampilanya
:
nama barang :
harga : Rp.
jumlah :
total biaya : Rp
jawab :
declare
nama_barang
varchar2(256);
harga_barang
number(8);
jumlah_barang
number(8);
total number(8);
begin
nama_barang:=’&input_nama_barang’;
harga_barang:=&input_harga_barang;
jumlah_barang:=&input_jumlah_barang;
total:=harga_barang*jumlah_barang;
dbms_output.put_line
('nama_barang: ' ||nama_barang);
dbms_output.put_line
('harga_barang : Rp ' ||harga_barang);
dbms_output.put_line
('jumlah_barang: ' ||jumlah_barang);
dbms_output.put_line
('total : Rp ' ||total);
end;
hasil
pengeksekusian akan tampak seperti gambar berikut :
Struktur script blok anonymous PL / SQL dengan menggunakan
exception
DECLARE
…
deklarasi variabel, type dan subprogram lokal
BEGIN
……
prosedural dan SQL masuk disini
EXCEPTION
……
penanganan eksepsi (ERROR)
END;
Contoh :
1. Tampilkan
frist_name dan last_name dari tabel pegawai yang employee_id = 100 yang ada
pada skema HR…..
declare
vf_name varchar2(256);
vl_name varchar2(256);
begin
select first_name, last_name into
vf_name, vl_name
from employees
where employee_id = '100';
dbms_output.put_line(vf_name||'
'||vl_name);
exception
when no_data_found then
dbms_output.put_line('data tidak ada');
end;
hasil pengeksekusian akan tampak seperti gambar berikut:
Penggunaan IF
IF - THEN - ELSE - END IF
Struktur penggunaan IF :
IF kondisi pertama THEN
…….. baris perintah 1
ELSE
……. baris perintah 2
END IF;
Contoh 1 :
Declare
a varchar(20);
b varchar(2);
begin
a:='&Nama';
b:='&Jenis_Kelamin';
if (b='l')or(b='L') then
dbms_output.put_line('Selamat
Datang Mas '||a);
else if
(b='p')or(b='P') then
dbms_output.put_line('Selamat
Datang Mbak '||a);
end if;
end if;
end;
hasil pengeksekusian akan tampak seperti gambar berikut :
Contoh 2:
declare
a number (3);
begin
a:=&masukkan_nilainya ;
if (a >= 75) then
dbms_output.put_line('Anda
mendapatkan nilai A');
else if((a >= 65) and (a <
75)) then
dbms_output.put_line('Anda
mendapatkan nilai B');
else if((a>=55) and (a <65)) then
dbms_output.put_line('Anda
mendapatkan nilai C');
else if((a >= 40) and (a <55)) then
dbms_output.put_line('Anda
mendapatkan nilai D');
else
if(a <40) then
dbms_output.put_line('Anda
mendapatkan nilai E');
end
if;
end if;
end if;
end if;
end if;
end;
apabila kita menginputkan bilangan a > 75, maka hasil pengeksekusian akan tampak seperti
gambar berikut :
apabila kita menginputkan bilangan 65 >= a < 75, maka hasil pengeksekusian akan tampak seperti
gambar berikut :
apabila kita menginputkan bilangan 55 >= a < 65, maka hasil pengeksekusian akan tampak seperti
gambar berikut :
apabila kita menginputkan bilangan 40 >= a < 55, maka hasil pengeksekusian akan tampak seperti
gambar berikut :
apabila kita menginputkan bilangan a < 40, maka hasil pengeksekusian akan tampak seperti
gambar berikut :
NB : Kalo ada yang kurang tolong diberi komentar yah ...........
Terimakasih
Subscribe to:
Posts (Atom)