Pages

Monday, October 25, 2010

Cursor Implisit dan Cursor Eksplisit

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

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.....

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

Saturday, October 9, 2010

STRUKTUR BLOCK ANONYMOUS PL / SQL

Cara–cara membuat script, yaitu :
1. Buat di notepad  (tuliskan scripnya) 
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;
Contoh : 
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;
  Hasil pengeksekusian akan tampak seperti gambar berikut :
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 : 
   1. Hitunglah luas sebuah segitiga, tetapi nilai dari alas dan tinggi di input …….
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