Minggu, 14 November 2010

Cursor Implisit dan Eksplisit


Cursor
Cursor adalah suatu variable dalam blok PL/SQL 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 ada 2 macam yaitu :
-  Cursor Implisit
-  Cursor Eksplisit

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 :
select first_name, last_name, salary
into nama_depan, nama_belakang, gaji
from employees
where first_name = ‘Susan’;

contoh scriptnya adalah :

declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
nama_belakang employees.last_name%type;
gaji employees.salary%type;
begin
nama_cari := '&masukkan_nama';
select first_name, last_name, salary
into nama_depan, nama_belakang, gaji
from employees
where first_name = nama_cari;
dbms_output.put_line('pegawai bernama '||nama_depan||
' '||nama_belakang||' gajinya adalah USD '||gaji);
end;
/

Tampilan yang akan keluar adalah sbb :










Cursor Eksplisit
cursor eksplisit harus dideklarasikan terlebih dahulu sebelum digunakan. Terdapat empat tahapan penggunaan cursor eksplisit ini yaitu: DECLARE, OPEN, FETCH dan terakhir adalah CLOSE.

contoh scriptnya adalah :

declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
nama_belakang employees.last_name%type;
gaji employees.salary%type;
cursor anu is
select first_name, last_name, salary
from employees
where first_name = nama_cari;
begin
nama_cari := '&masukkan_nama';
open anu;
loop
fetch anu into nama_depan, nama_belakang, gaji;
exit when anu%notfound;
dbms_output.put_line('pegawai bernama '||nama_depan||
' ' ||nama_belakang||' gajinya adalah USD '||gaji);
end loop;
close anu;
end;
/


Tampilan yang akan keluar adalah sbb :




Looping


Looping
Struktur iterasi (looping) memungkinkan eksekusi blok statemen secara berulang selama kondisi yang didefinisikan bernilai TRUE.
Looping terbagi atas 3 bagian yaitu :
·         Simple LOOP
·         FOR
·         WHILE
Untuk keluar dari kontrol iterasi menuju statemen-statemen di bawah blok iterasi (setelah posisi END LOOP) dapat menggunakan statemen EXIT atau EXIT WHEN.

Simple LOOP
Struktur simple LOOP digunakan bila diinginkan minimal iterasi dijalankan satu kali. Dalam struktur ini harus ditambahkan statemen EXIT WHEN untuk menghindari eksekusi tak terbatas (infinitif).
LOOP
Statemen-statemen ;
END LOOP ;

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




Tampilan yang akan keluar adalah sbb :












Statemen FOR

Struktur FOR tidak memiliki kondisi, sehingga perlu didefinisikan indeks minimal dan maksimal sebagai batas iterasi. Umumnya struktur ini digunakan untuk iterasi yang banyaknya sudah diketahui dengan pasti.
FOR var IN [REVERSE] indeks_min . . indeks_max LOOP
            Statemen-statemen ;
END LOOP ;


o   Variabel iterasi (var) tidak perlu dideklarasi karena PL/SQL melakukan deklarasi secara implicit dan variable ini berlaku dalam LOOP itu saja.
o   Kata REVERSE akan membuat iterasi dimulai dari indeks_max dan berkurang satu untuk proses iterasi. Demikian seterusnya sehingga var = indeks_min.
o   Bila nilai indeks_max < indeks_min, proses iterasi tidak dilakukan.


Contoh :
Declare
i number(3);
BEGIN
FOR i IN 1..10 LOOP
   DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
END LOOP;
END;
/


Tampilan yang akan keluar adalah sbb :











Statemen WHILE

Struktur WHILE selalu memeriksa kebenaran kondisi di awal blok iterasi.
Bila kondisi bernilai FALSE, maka statemen-statemen dalam blog iterasi tidak akan dieksekusi.
WHILE kondisi LOOP
Statemen-statemen ;
END LOOP ;


 Contoh :
DECLARE
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;
/

Tampilan yang akan keluar adalah sbb :






Statemen EXIT dan EXIT WHEN

Kedua statemen ini digunakan untuk keluar dari blog iterasi tanpa melanjutkan proses yang sedang dilakukan.
EXIT WHEN kondisi ;

Jika diatas identik dengan maka memakai perintah berikut :
IF kondisi THEN
            EXIT ;
END IF ;


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

Tampilan yang akan keluar adalah sbb :

Rabu, 13 Oktober 2010

Tutorial Membuat Script dan Statement If


Membuat Script

Langkah-langkah dalam membuat script :
·         Membuka Notepad
·         Tulis Script yang diinginkan
Contoh :
Declare
begin
dbms_output.put_line('Bismillah');
dbms_output.put_line('Nama Saya Kharisma');
end;
/

·         Simpan file tersebut dengan ketentuan sbb :
·        





           Bukalah Command Prompt dengan cara klik tombol windows + R pada keyboard untuk menampilkan script yang telah dibuat. Setelah itu ketikan ‘sqlplus’ lalu ketikan ‘hr’ pada user-name dan password. Lakukan seperti gambar di bawah ini :


·        Ketikan ‘SET SERVEROUTPUT ON’ lalu masukkan alamat file diawali dengan ‘@’ dan diakhiri dengan ‘;’ kemudian tekan enter. Lakukan seperti gambar di bawah ini :
     







Contoh-contoh scripting dalam SQL:

Contoh No 1
declare
begin
dbms_output.put_line('a:=10;');
dbms_output.put_line('f(x,y) = 23x + 2y - 85');
end;
/
                                                                
Tampilan yang akan keluar adalah sbb :










Contoh No 2
declare
begin
dbms_output.put_line('Sekarang hari Sabtu');
dbms_output.put_line('Kemarin hari juma''at');
end;
/

Tampilan yang akan keluar adalah sbb :










Contoh Menghitung Luas dan Keliling Persegi :
declare
x number(2);
y number(2);
z number(2);
a number(2);

begin
x:=&_nilaix;
y:=&_nilaiy;
z:=2*(x+y);
a:=x*y;

dbms_output.put_line('Persegi panjang ini kelilingnya ' ||z ||' Luasnya ' || a);

end;
/

Tampilan yang akan dikeluarkan











Contoh Membuat Kalkulator Sederhana :
declare
x number(2);
y number(2);
z number(2);
a number(2);
b number(2);

begin
x:='&nilai_x' ;
y:='&nilai_y' ;
z:=x+y;
a:=x-y;
b:=x*y;

dbms_output.put_line(x||' ditambah'||y||'sama dengan '||z);
dbms_output.put_line(x||' dikurang'||y||'sama dengan '||a);
dbms_output.put_line(x||' dikali'||y||'sama dengan '||b);

end;
/

Tampilan yang akan dikeluarkan













Contoh Menampilkan hari, tanggal, bulan, tahun
declare
begin
dbms_output.put_line('sekarang hari ' ||to_char (sysdate,'day'));
dbms_output.put_line('sekarang tanggal ' ||to_char (sysdate,'dd'));
dbms_output.put_line('sekarang bulan ' ||to_char (sysdate,'mm'));
dbms_output.put_line('sekarang tahun ' ||to_char (sysdate,'yyyy'));

end;
/                                                                                                                          

Tampilan yang akan dikeluarkan










Statement IF
Penggunaan statement if terbagi atas 3 bagian, yaitu untuk satu kondisi, dua kondisi, dan tiga kondisi atau lebih.

  Satu Kondisi (IF-THEN)
IF kondisi THEN

Statement-statement;
END IF;


Dua Kondisi (IF-THEN-ELSE)         
IF kondisi THEN 
Statement-statement A;
ELSE 
Statement-statement B;
END IF;

Contoh Script
declare
nama varchar(10);
harga number (10);
diskon number (2);
total number (10);

begin
nama:='&nama';
harga:=&harga_buku;
diskon:=&diskon;
total:=harga-harga*diskon/100;

dbms_output.put_line('Selamat Datang '||nama);
dbms_output.put_line('Harga yang harus dibayar Rp '||total);

if diskon < 20 THEN
dbms_output.put_line('ikh,, pelit banget sich..!');
else
dbms_output.put_line('wah,, baik banget..!');

end if;
end;
/

Tampilan yang akan dikeluarkan














 Tiga atau Lebih Kondisi (IF-THEN-ELSIF)
IF kondisi_1 THEN
Statement-statement A;
ELSIF kondisi_2 THEN
Statement-statement B;
……
ELSIF kondisi_n THEN
Statement-statement N;
END IF;

Contoh Script
declare
nama varchar(10);
umur number(2);

begin
nama:='&nama';
umur:='&umur';

if (umur<17) then
dbms_output.put_line(nama ||' Masa Depan Masih Panjang');

elsif (umur>=17) and (umur<=50) then
dbms_output.put_line(nama ||' Jangan main-main');

else
dbms_output.put_line(nama ||' ingat mati..!');

end if;
end;
/

Tampilan yang akan dikeluarkan

Rabu, 06 Oktober 2010

Tutorial DDL dan DML


DDL
*CREATE TABLE

Format Pembuatan Table :
CREATE TABLE   Nama_Tabel (
Nama_kolom1  tipe_kolom1,
Nama_kolom2  tipe_kolom2,
Constraint1, Constraint2
);
Format Constraint Primary Key:
CONSTRAINT Nama_Constraint PRIMARY KEY (Nama_Kolom);
Format Constraint Foreign Key:
­­­CONSTRAINT Nama_Constraint FOREIGN KEY (Nama_KolomFK) REFERENCES Nama_Tabel_Induk (Nama_KolomTI);

Contoh 1: Membuat Tabel Anggota dengan primary key pada kolom no_anggota
create table anggota(                   
no_anggota number(6),                   
nama_anggota varchar(50) not null,
alamat_anggota varchar (100),                                                           
constraint pk1 primary key(no_anggota)  
);

*ALTER TABEL
Format Menambah Kolom/Constraint Table :
ALTER TABLE      Nama_Tabel      ADD (
Nama_kolom1  tipe_kolom1,
Nama_kolom2  tipe_kolom2,
Constraint1, Constraint2
);
Format Memodifikasi Kolom Table :
ALTER TABLE      Nama_Tabel      MODIFY (
Nama_kolom1  tipe_kolom1,
Nama_kolom2  tipe_kolom2
);

Format Membuang Kolom/Constraint Table :
ALTER TABLE      Nama_Tabel      DROP COLUMN                Nama_Kolom;
Atau
ALTER TABLE      Nama_Table      DROP CONSTRAINT         Nama_Constraint;
Contoh1: Menambah kolom golongan darah dan sebuah foreign key ke tabel x kolom_anu
alter table anggota add(                
golongan_darah char(1),                                                          
constraint c foreign key (golongan_darah) references X(anu)  
);

*DROP TABEL

Format Penghancuran Table :
DROP TABLE       Nama_Tabel;
Contoh: Menghancurkan tabel anggota berikut seluruh data yang ada di dalamnya
drop table anggota;
Note: Jika tabel A masih diacu oleh tabel B maka harus menghancurkan dulu tabel B sebelum tabel A.


DML

*INSERT
Format Menambah Data Jika Semua Kolom Ingin Diisi:
INSERT INTO      Nama_Tabel      VALUES (
Data_kolom1,
Data_kolom2,
Data_kolom3
);
Format Menambah Data Jika Hanya Kolom Tertentu Yang Diisi:
INSERT INTO      Nama_Tabel      (Nama_Kolom1, Nama_Kolom2)
VALUES (
Data_kolom1,
Data_kolom2
);
Contoh1: Menambah data pada tabel anggota (semua kolom diisi sesuai urutan kolom pada tabel)
insert into anggota values(             
101,                
‘Ngatimin van der Woodsen’,
‘Jl. Entah Berantah nomor sekian’
);

*UPDATE
Format Mengubah Data:
UPDATE               Nama_Tabel
SET         Nama_Kolom = data_baru
WHERE                 syarat_perubahan_data;
Contoh1: Mengubah semua alamat anggota menjadi ‘Sukabirus’
update anggota set alamat_anggota = ‘Sukabirus’;

*DELETE
Format Menghapus Data:
DELETE FROM    Nama_Tabel
WHERE                                 syarat_perubahan_data;
Contoh1: Menghapus seluruh isi tabel anggota
delete from anggota;