Sabtu, 30 Oktober 2010

TUTORIAL CURSOR
Blok PL/SQL tidak mengizinkan Anda untuk menampilkan beberapa baris dengan menggunakan perintah SELECT secara langsung. Untuk mengatasi hal tersebut, maka Anda harus menggunakan cursor. Berbeda dengan variabel biasa yang hanya dapat menyimpan satu nilai, cursor adalah sejenis variabel yang digunakan untuk menampung banyak nilai berupa baris atau record. Nilai-nilai yang disimpan di dalam sebuah cursor selanjutnya dapat dimanipulasi sehingga dapat digunakan sesuai kebutuhan. Dalam pemakaiannya, sebuah cursor harus melalui empat buah tahap, yaitu tahap deklarasi (DECLARE), buka (OPEN), ambil data (FETCH) dan tutup (CLOSE). Cursor sendiri dibedakan ke dalam dua jenis, yaitu cursor eksplisit dan implisit.
1.1 Cursor Eksplisit
Cursor eksplisit adalah cursor yang harus dibuka dan ditutup secara manual. Dengan kata lain jenis cursor ini tidak secara otomatis terbuka sendiri. Terdapat empat buah atribut yang berhubungan erat pada saat kita menggunakan cursor, yaitu seperti yang ditunjukkan pada tabel di bawah ini.

ATRIBUT KETERANGAN
%FOUND Baris ditemukan
%NOTFOUND Baris tidak ditemukan
%ROWCOUNT Jumlah baris yang telah diambil/ditangkap melalui perintah FETCH
%ISOPEN Mengembalikan nilai TRUE apabila cursor masih dalam keadaan terbuka

Sebagai contoh apabila kita ingin melakukan pengecekan apakah suatu cursor dalam keadaan terbuka atau tidak, maka contoh kode yang perlu dituliskan adalah seperti di bawah ini.
if nama_cursor%ISOPEN then
---- kode yang ingin dituliskan
end if;
1.1.1 Deklarasi Cursor
Seperti yang telah disinggungkan sebelumnya bahwa untuk membuat sebuah cursor diperlukan adanya proses deklarasi, gunanya adalah untuk menjelaskan data-data apa saja yang akan diambil dari database dan selanjutnya disimpan ke dalam cursor. Adapun bentuk umum pendeklarasian cursor dapat Anda lihat di bawah ini.
DECLARE
CURSOR nama_cursor IS
Statemen_SELECT;
nama_cursor adalah nama yang kita berikan untuk cursor yang akan kita deklarasikan, sedangkan statemen_SELECT yang dimaksud di sini adalah query yang ingin didefinisikan.
Coba Anda perhatikan contoh pendeklarasian cursor di bawah ini.
DECLARE CURSOR cur_barang IS
SELECT kode_barang, nama_barang, stok_barang
FROM BARANG;
Pada kode di atas kita mendeklarasikan cursor dengan nama cur_barang yang akan digunakan untuk menampung semua data kode barang, nama barang dan jumlah stok yang ada pada tabel barang.
1.1.2 Membuka Cursor
Setelah Anda melakukan deklarasi cursor, kita masih belum dapat memanipulasi data yang terdapat di dalam cursor tersebut, karena cursor masih dalam keadaan tertutup. Maka dari itu, langkah selanjutnya yang perlu dilakukan adalah membuka cursor. Hal ini dilakukan karena untuk memanipulasi sebuah cursor, cursor harus sudah dalam keadaan terbuka. Adapun perintah untuk membuka cursor adalah dengan kata kunci OPEN yang diikuti dengan nama cursor yang telah dideklarasikan sebelumnya.
OPEN nama_cursor;
Sebagai contoh, apabila kita ingin membuka cursor cur_barang yang telah kita deklarasikan di atas, maka perintahnya adalah sebagai berikut.
open cur_barang;
Sampai di sini cursor cur_barang sudah dalam keadaan terbuka dan siap untuk diambil datanya melalui perintah FETCH, seperti yang akan dijelaskan sub bab berikutnya.
1.1.3 Mengambil / Menangkap Isi Cursor
Oleh karena cursor menampung banyak baris, maka diperlukan suatu cara untuk menangkap nilai setiap baris dari sebuah cursor. Adapun cara untuk melakukan hal itu adalah dengan menggunakan perintah FETCH. Penting untuk diperhatikan juga bahwa untuk melakukan penangkapan sebuah baris diperlukan variabel dengan tipe nama_cursor%ROWTYPE, yang berfungsi untuk menyimpan nilai-nilai dari baris yang ditangkap tersebut. Sedangkan untuk menangkap semua baris yang terdapat dalam cursor, maka harus digunakan pengulangan. Berikut ini bentuk umum cara pengambilan sebuah baris data dari suatu cursor dan menyimpannya ke dalam sebuah variabel.
FETCH nama_cursor INTO nama_variabel;
nama_cursor adalah nama dari cursor yang akan diambil datanya, sedangkan nama_variabel adalah variabel penampung yang telah dideklarasikan dengan menggunakan tipe nama_cursor%ROWTYPE. Sebagai contoh, apabila kita ingin melakukan pengambilan semua data yang tersimpan dalam cursor cur_barang di atas, maka kita dapat melakukannya dengan menuliskan kode sebagai berikut.
declare

vRec cur_barang%ROWTYPE;
begin

loop
fetch cur_barang into vRec;
exit when cur_barang%NOTFOUND;
dbms_output.put_line(vRec.kode_barang || ‘ ‘ ||
vRec.nama_barang || ‘ ‘ ||
vRec.stok_barang );
end loop;

end;
pada kode tadi kita menggunakan variabel vRec yang dideklarasikan untuk mempresentasikan satu baris data dari cur_barang. Setelah cursor dibuka, kita dapat langsung mengambil datanya untuk kemudian ditampung ke dalam variabel vRec, yaitu dengan menggunakan perintah FETCH.
Sehingga satu baris data di dalam cursor dapat kita ambil dengan menggunakan statemen di bawah ini.
Fetch cur_barang into vRec;
Sedangkan untuk mengambil nilai dari variabel vRec, Anda dapat melakukannya dengan mengaksesnya langsung dengan menggunakan nama kolomnya. Hal ini sama seperti pada saat kita menggunakan tipe record. Berikut ini kode yang akan melakukan pengambilan nilai kolom dari variabel vRec.
vRec.kode_barang; -- akan mengambil nilai dari kolom, kode_barang
vRec.nama_barang; -- akan mengambil nilai dari kolom, nama_barang
vRec.jumlah_stok; -- akan mengambil nilai dari kolom, jumlah_stok
Sebagai tambahan, apabila Anda menggunakan variabel biasa (tidak menggunakan atribut %ROWTYPE), maka Anda perlu memasukkannya ke setiap variabel yang digunakan. Misalnya, di sini kita akan menggunakan tiga buah variabel yang masing-masing akan menampung kolom kode_barang, nama_barang dan stok_barang. Perhatikan contoh kode berikut.
declare

kode char(6);
nama varchar2(30);
jumlah number(4);
begin

fetch cur_barang into kode, nama, jumlah;

end;
pada kode tadi berarti nilai setiap baris yang diambil dari cursor akan dimasukkan ke dalam variabel kode, nama dan jumlah, yang didasarkan pada urutan field di dalam cursor.
Untuk lebih dapat memastikan bahwa tipe dari variabel kode, nama dan jumlah benar-benar dengan tipe dari kolom kode_barang, nama_barang dan stok_barang yang terdapat pada table barang di dalam database, maka kita dapat menggunakan atribut %TYPE yang memiliki bentuk umum seperti berikut.
Nama_variabel nama_tabel.nama_field%TYPE;
Dengan demikian kita dapat mengubah kode di atas dengan kode di bawah ini.
declare

kode_barang.kode_barang%TYPE;
nama_barang.nama_barang%TYPE;
jumlah_barang.stok_barang%TYPE;
begin

fetch cur_barang into kode, nama, jumlah;

end;
Selanjutnya, oleh karena data di dalam cursor dapat berisi lebih dari satu baris, maka untuk mengambil semua baris datanya kita perlu melakukan pengulangan. Dengan pengulangan tersebut berarti kita akan mengambil atau menangkap data mulai dari baris pertama sampai baris terakhir. Kondisi yang akan menghentikan pengulangan di atas adalah pada saat atribut cur_barang%NOTFOUND bernilai true, yang berarti bahwa baris data di dalam cursor sudah tidak ditemukan lagi.
1.1.4 Menutup Cursor
Setelah memanipulasi cursor, biasakan untuk menutup cursor tersebut. Hal ini penting jika terdapat blok PL/SQL lain yang akan membuka cursor ini lagi.
CLOSE nama_cursor;
Jika sebuah cursor tidak ditutup, maka cursor itu akan tetap dalam keadaan terbuka sampai dilakukan disconnect pada database.
Dalam kasus ini, sebaiknya kita menutup cursor cur_barang setelah proses pengambilan data selesai, yaitu dengan menuliskan perintah berikut.
1.2 Cursor Implisit
Cursor implisit merupakan cursor yang tidak perlu untuk dideklarasikan sebelumnya, cursor jenis ini akan berasosiasi dengan perintah SELECT, INSERT, DELETE dan UPDATE. Adapun atribut-atribut yang terdapat pada cursor implisit adalah sbb :
• SQL%NOTFOUND
Atribut ini akan berasosiasi dengan statemen SELECT yaitu dengan mengembalikan nilai true apabila query yang didefinisikan tidak memberikan hasil (NULL) dan false apabila query memberikan hasil atau terdapat data yang ditemukan dalam proses query tersebut.
• SQL&FOUND
Atribut ini merupakan kebalikan dari atribut SQL%NOTFOUND, yaitu dengan mengembalikan nilai true apabila query memberikan hasil dan false apabila hasil query NULL.
• SQL%ISOPEN
Atribut ini akan bernilai true pada saat eksekusi query. Setelah proses eksekusi selesai maka atribut ini secara otomatis akan bernilai false.
• SQL%ROWCOUNT
Atribut ini menunjukkan banyaknya baris yang diberikan oleh query yang dilakukan oleh user.
Contoh kode cursor implisit :
declare
vNama customer.nama_customer%type;
begin
select nama_customer into vNama from customer;
where upper(kode_customer) = ‘J-0001’;
--- memeriksa query apakah memberikan hasil atau tidak
If SQL%NOTFOUND then
dbms_output.put_line(‘Data tidak ditemukan’);
else
dbms_output.put_line(‘Nama Customer : ’|| vNama);
end;
end;
/
Pada contoh diatas kita telah membuat sebuah blok PL/SQL yang berguna untuk mencari nama customer dengan kode customer ‘J-0001’. Tampak di atas bahwa kita dapat menggunakan atribut SQL%NOTFOUND untuk melakukan pengecekan terhadap hasil yang diberikan. Artinya, apabila tidak ada hasil yang diberikan dari query yang didefinisikan, maka blok PL/SQL tersebut akan menampilkan informasi yang menyebuutkan bahwa data yang dicari tidak ditemukan di dalam database. Sebaliknya, apabila ditemukan maka nama customer tersebut akan ditampilkan ke layar SQL*Plus. Sekarang coba Anda ganti kode ‘J-0001’ dengan teks sembarang, misalnya ‘XXXXX’, maka Anda akan melihat hasil seperti berikut.
1.2.1 Manipulasi Cursor dengan Struktur Pengulangan FOR
Dalam pemanipulasian data yang terdapat di dalam cursor, kita juga dapat menggunakan struktur pengulangan for. Keuntungan dari bentuk ini adalah kita tidak perlu untuk menampung data-data tersebut ke dalam variabel. Selain itu, variabel untuk pengulangan pun tidak perlu dideklarasikan. Di sini, kita tidak perlu untuk membuka maupun menutup cursor teersebut karena prosesnya sudah dilakukan secara otomatis. Maka dari itu, cursor semacam ini juga sering dinamakan cursor otomatis. Berikut ini bentuk umum yang digunakan untuk melakukan pemanipulasian data di dalam cursor dengan menggunakan struktur pengulangan for.
FOR nama_variabel IN nama_cursor LOOP
--- proses yang kan dilakukan
END LOOP;
Untuk membuktikannya, di sini kita akan membuat sebuah cursor yang dapat menyimpan semua data pada tabel barang dan menampilkannya dengan menggunakan struktur pengulangan for. Berikut ini kodenya :
declare
cursor c_customer is
select kode_customer, nama_customer from customer;
where upper(kota_customer) = ‘BANDUNG’
order by kode_customer;
begin
for j in c_customer loop
dbms_output.put_line(j.kode_customer||’ ’||
j.nama_customer);
end loop;
end;
/
Anda dapat melihat pada kode di atas bahwa kita tidak pernah mendeklarasikan variabel j, namun kita dapat menggunakannya langsung pada saat melakukan pengulangan dan pada saat melakukan pengaksesan data dari c_customer. Banyaknya pengulangan yang terjadi adalah sama dengan banyaknya baris data yang terdapat dalam cursor c_customer. Dalam kasus ini, cursor c_customer di atas digunakan untuk menampilkan kode dan nama customer yang berdomisili di kota Bandung, dan ternyata data yang dihasilkan adalah sebanyak 4 baris. Hal ini berarti pada akhir pengulangan maka variabel j juga akan bernilai 4.

Minggu, 24 Oktober 2010

TUTORIAL LOOP

^^ TUTORIAL LOOP ^^

Pengulangan (looping) adalah suatu blok yang memperbolehkan Anda untuk mengulang statemen-statemen dalam sebuah blok PL/SQL. Statemen-statemen yang terdapat dalam sebuah blok pengulangan akan terus dieksekusi selama kondisi yang didefinisikan bernilai benar dan pengulangan baru akan berhenti jika kondisi telah bernilai salah. Secara umum, proses pengulangan yang terjadi di dalam pemrograman dapat digambarkan seperti berikut.

1.1 Menggunakan Simple LOOP

Dalam struktur jenis ini, kita perlu untuk menggunakan statemen EXIT yang berfungsi untuk menghentikan pengulangan. Bagi Anda yang pernah mempelajari bahasa pemrograman lain, maka struktur pengulangan jenis ini identik dengan struktur repeat-until di dalam bahasa Pascal atau struktur do-while di dalam bahasa C/C++ dan Java. Berikut ini bentuk umum dari pembuatan struktur simple loop.

LOOP

Statemen

END LOOP;

Pada bagian ini perlu dideklarasikan sebuah variabel yang diisi dengan nilai sebagai kondisi awal pengulangan. Proses semacam ini dikenal dengan proses inisialisasi nilai. Selanjutnya dalam blok pengulangan perlu juga dideklarasikan kondisi untuk berhenti dari proses pengulangan. Untuk memahami konsep pengulangan jenis ini, tulis kode berikut.

declare

k integer; -- mendeklarasikan variabel k

begin

k := 1;

loop

dbms_output.put_line(‘Baris ke- ’||to_char(k));

k := k + 1; -- nilai k sekarang bertambah 1

exit when k > 5 – jika nilai k=6,

end loop;

end;

Syntak diatas akan menampilkan 5 baris teks yang diikuti dengan indeks dari baris tersebut.

Loop sederhana ini juga digunakan ketika satu set pernyataan yang akan dieksekusi minimal sekali sebelum loop berakhir. Kondisi EXIT harus ditetapkan dalam loop, sebaliknya loop masuk kedalam jumlah tak terbatas iterasi. Ketika kondisi EXIT adalah memenuhi proses keluar dari loop.

Perintah umum untuk menulis Loop ;

   LOOP  
               statements;  
               EXIT; 
    {Atau EXIT WHEN kondisi;
  } 
   END LOOP; 
Ini adalah langkah-langkah penting yang harus diikuti ketika menggunakan Loop :
a.       Menginisialisasinya suatu variabel sebelum tubuh loop,
b.      Kenaikan variabel pada loop,
c.       Gunakan EXIT pernyataan untuk keluar dari loop.
 
1.2  Menggunakan Statemen FOR
Pada struktur jenis ini tidak terdapat adanya kondisi sehingga kita perlu untuk mendefinisikan indeks minimal dan maksimal sebagai batas-batas dari proses pengulangan yang akan dilakukan. Maka dari itu, struktur ini pada umumnya digunakan untuk melakukan pengulangan yang banyaknya sudah diketahui dengan pasti. Berikut ini bentuk umum untuk mendefinisikan.
FOR variabel IN indeks_awal .. indeks_akhir LOOP
         statemen
         ….
END LOOP;
Syntaknya sebagai berikut :
declare
         k  integer;
begin
for k in 1..5 loop
         dbms_output.put_line(‘Baris ke- ’||to_char(k));
end loop;
end;
 
Sebagai contoh lain, di sini kita akan kembali menampilkan semua nama customer yang terdapat pada table customer. Namun, kali ini kita akan menggunakan pengulangan dengan menggunakan struktur FOR. Berikut ini kode yang dimaksud.
declare
         cursor cur is
select nama_customer from customer;
order by nama_customer;
vRec cur%ROWTYPE;
i integer;
n integer;
begin
         select count(*) into n
         from customer;
open cur;
for i in 1..n loop
         fetch cur into vRec;
         dbms_output.put_line(vRec.nama_customer);
end loop;
close cur;
end;
/
Hasil yang akan diberikan oleh kode tersebut akan sama pada saat kita melakukan pengulangan dengan menggunakan struktur simple loop, yaitu seperti yang tampak pada gambar berikut.
TOKO AYU
TOKO KARISNA

TOKO MAHARANI

TOKO MULYA

TOKO SURYA

TOKO WARNA
Procedure successfully completed
 
Keterangan ;
-          select count(*) into n
from customer;
Kode tersebut berguna untuk mengambil banyaknya record yang terdapat pada table customer  dan menyimpannya ke dalam variabel n.
-          for I in 1..n loop
   fetch cur into vRec;
   dbms_output.put_line( vRec.nama_customer);
end loop;
Sedangkan kode di atas berarti melakukan pengulangan mulai dari indeks pertama sampai ke n, yaitu untuk menampilkan semua nama yang telah terkandung dalam cursor cur.
1.3  Menggunakan Struktur WHILE
Struktur jenis ini selalu memeriksa kebenaran kondisinya di bagian awal blok atau badan pengulangan. Dengan demikian apabila kondisi salah, maka statemen yang terdapat di dalam blok tidak akan pernah dieksekusi. Pengulangan jenis ini sebenarnya hamper mirip dengan struktur simple loop. Berikut ini bentuk umum dari struktur WHILE.
WHILE kondisi LOOP
           statemen
              …..
END LOOP;
Untuk mengetahui perbedaan yang ada dengan kedua struktur pengulangan sebelumnya, kita akan menuliskan kembali contoh yang sama seperti di atas, namun di sini kita akan menggunakan struktur WHILE. Adapun kode pembuatannya adalah sebagai berikut.
declare
           k integer;
begin
           k :=1;
           while k<=5 loop
dbms_output.put_line(‘Baris ke- ’||to_char(k));
           k:=k+1;
end loop;
end;
Hasil yang akan diberikan dari kode di atas adalah seperti yang tampak pada gambar di bawah ini.
Baris ke-1
Baris ke-2
Baris ke-3
Baris ke-4
Baris ke-5
Keterangan :
Pada kode di atas mula-mula didefinisikan nilai k dengan 1. Setelah itu dilakukan pengecekan apakah nilai k tersebut lebih kecil atau sama dengan 5? Oleh karena 1 lebiih kecil dari 5, berarti kondisi bernilai benar sehingga akan ditampilkan teks ‘Baris ke-’. Selanjutnya nilai k ditambah 1 dan dilakukan kembali pengecekan. Selama nilai k masih lebih kecil atau sama dengan 5 maka statemen yang ada pada blok pengulangan akan tetap dieksekusi. Pengulangan di atas baru berhenti jika variabel k sudah mencapai nilai 6.
 
 

Rabu, 13 Oktober 2010

TUTORIAL IF

TUTORIAL IF

Percabangan (branching)

Adalah suatu kontrol untuk pengecekan yang dilakukan sebelum statemen-statemen dalam sebuah blok SQL dieksekusi. Statemen-statemen tersebut akan dilakukan jika suatu kondisi yang kita definisikan bernilai benar (TRUE), sebaliknya jika kondisi bernilai salah (FALSE), maka statemen-statemen tersebut tidak akan pernah dieksekusi. Istilah percabangan di sini juga sering disebut pemilihan, artinya blok SQL akan memilih statemen yang akan dieksekusi berdasarkan kondisi yang dipenuhinya. SQL mendukung dua buah cara untuk melakukan pemilihan statemen, yaitu dengan menggunakan statemen IF dan CASE.

A. Menggunakan statemen IF

Untuk memudahkan pembahasan, disini kita akan mengklasifikasikan pemilihan dengan menggunakan statemen IF ini ke dalam tiga bagian, yaitu struktur untuk satu kondisi, dua kondisi dan tiga kondisi.

1.1 Satu kondisi

Dalam struktur jenis ini SQL hanya akan mengecek sebuah kondisi, apabila kondisi tersebut tidak terpenuhi atau bernilai FALSE, maka eksekusi akan berpindah ke statemen selanjutnya yang berada di bawah blok pemilihan. Sebaliknya, apabila kondisi terpenuhi atau TRUE, maka statemen yang terdapat di dalam blok pemilihan tersebut akan dieksekusi terlebih dahulu sebelum akhirnya dilanjutkan ke statemen berikutnya yang berada di bawah blok pemilihan.

Contoh syntax satu kondisi :

IF kondisi THEN

statemen

END IF;

Latihan1 : Buatlah sebuah blok SQL yang menampilkan teks ‘PERSEDIAAN BARANG TELAH HABIS’ dari tabel barang yang nama barangnya LEMARI ES dan jika jumlah stok dari barang tersebut sama dengan 0.

declare

vstok barang.stok_barang%type;

begin

select stok_barang into vstok from barang

where upper(nama_barang)=upper(‘lemari es’);

--Memeriksa nilai dari variabel vstok

If (vstok = 0) then

dbms_output.put_line(‘PERSEDIAAN BARANG TELAH HABIS’);

end if;

end;

/

Keterangan :

- Pada bagian deklarasi dari jawaban di atas, terdapat variabel vstok yang bertipe barang.stok_barang%type. Tipe data tersebut sebenarnya implementasi dari formula namatabel.namakolom%type, dan %type berguna untuk menjamin bahwa tipe dari variabel vstok tersebut sama dengan tipe dari kolom stok_barang pada tabel barang,

- select stok_barang into vstok from barang

where upper(nama_barang) = upper(‘lemari es’);

syntax tersebut artinya mengambil jumlah stok lemari es dari tabel barang dan kemudian menyimpannya ke dalam variabel vstok.

1.2 Dua kondisi

Struktur ini lebih kompleks bila dibandingkan dengan struktur pemilihan yang baru saja kita pelajari sub bab di atas. Pasalnya, disini kita juga harus mendefinisikan sebuah kondisi khusus yang berguna untuk mengatasi apabila kondisi yang didefinisikan tidak terpenuhi. Kondisi khusus tersebut akan diletakkan pada bagian ELSE. Berikut ini bentuk umum dari pembuatan struktur IF yang memiliki dua buah kondisi.

IF kondisi THEN

statemen A;

ELSE

statemen B;

END IF;

END;

Jika kondisi dipenuhi (bernilai benar), maka statemen A akan dieksekusi, tetapi jika tidak dipenuhi (bernilai salah), maka yang akan dieksekusi adalah statemen B.

1.3 Tiga kondisi atau Lebih

Dalam struktur pemilihan jenis ini minimal terdapat dua buah kondisi yang harus diperiksa dan satu lagi kondisi khusus yang akan mengatasi kejadian dimana semua kondisi yang didefinisikan tidak terpenuhi (bernilai salah). Berikut ini bentuk umum dari pembuatan struktur pemilihan dalam SQL yang mengandung tiga buah kondisi atau lebih.

IF kondisi1 THEN

statemen A;

ELSE IF kondisi2 THEN

statemen B;

ELSE

statemen C;

END IF;

END;

Berbeda dengan dua pengecekan yang telah diterangkan sebelumnya, pengecekan tiga kondisi atau lebih ini relatif lebih rumit. Disini mula-mula akan dilakukan pengecekan terhadap kondisi_1, jika bernilai benar maka statemen A akan dieksekusi, tetapi jika nilai kondisi_1 ini salah maka akan dilakukan pengecekan nilai terhadap kondisi berikutnya, yaitu kondisi_2. Jika kondisi_2 bernilai benar, maka statemen B akan dieksekusi tetapi jika nilainya salah maka yang akan dieksekusi adalah statemen C.

Contoh syntax :

declare

noBulan integer;

namaBulan varchar(9);

begin

noBulan := 3;

if noBulan=1 then

namaBulan := ‘Januari’;

else if noBulan=2 then

namaBulan :=’Februari’;

else if noBulan=3 then

namaBulan :=’Maret’;

else if noBulan= 4 then

namaBulan :=’April’;

else if noBulan= 5 then

namaBulan :=’Mei’;

else if noBulan= 6 then

namaBulan :=’Juni’;

else if noBulan= 7 then

namaBulan :=’Juli’;

else if noBulan= 8 then

namaBulan :=’Agustus’;

else if noBulan=9 then

namaBulan :=’September’;

else if noBulan=10 then

namaBulan :=’Oktober’;

else if noBulan=11 then

namaBulan :=’November’;

else if noBulan=12 then

namaBulan :=’Desember’;

else

namaBulan :=’’;

end if;

dbms_output.put_line(nama_bulan);

end;

/

SQL JIKA ... LAIN Pernyataan

SQL IF ... ELSE Pernyataan digunakan untuk menguji kondisi. JIKA ... LAGI Pernyataan menggunakan dalam pelaksanaan sebuah pernyataan Transact-SQL (Toko Prosedur atau T-SQL) dan Trigger.
JIKA tes dapat diulang setelah JIKA lain atau mengikuti suatu ELSE. Tidak ada batasan untuk jumlah tingkat bersarang.

JIKA kondisi puas dan kembali ekspresi Boolean TRUE, maka akan dieksekusi JIKA pernyataan SQL Blok.
JIKA kondisi tidak puas dan FALSE Boolean kembali ekspresi, itu akan dieksekusi ELSE Blok Pernyataan SQL QUERY.

Sintaks untuk JIKA ... LAIN
IF (Boolean_expression)
BEGIN
Sql Blok Pernyataan
AKHIR
LAIN
BEGIN
Sql Blok Pernyataan
AKHIR

Di bawah ini adalah contoh sederhana dari ... ELSE Pernyataan IF dengan 1 JIKA ... LAIN Blok
Untuk bagian Boolean_expression, Anda dapat mengganti dengan kondisi Anda agar sesuai dengan query SQL Anda.
Hal ini juga dapat menggunakan Exists dalam Kondisi untuk memeriksa keberadaan Pernyataan SQl atau Row.
IF (3> 2)
BEGIN
PILIH 'Benar'
AKHIR
LAIN
BEGIN
PILIH 'Salah'
AKHIR
Nilai = Benar

IF (3 <2)
BEGIN
PILIH 'Benar'
AKHIR
LAIN
BEGIN
PILIH 'Salah'
AKHIR
Nilai = Salah

Di bawah ini adalah contoh lain lebih dari 1 IF ... ELSE SQL Blok Pernyataan
IF (10 <2)
PILIH 'Benar'
LAIN
PILIH 'Salah'
IF ((10-2)> 5)
PILIH 'Lebih dari 5'
Nilai = Salah
Nilai = Lebih dari 5

Jika Anda JIKA ... ELSE Blok SQL Pernyataan hanya memiliki 1 query SQL, Anda tidak perlu menyertakan BEGIN ... END. Jika Anda JIKA ... ELSE Blok SQL Pernyataan memiliki lebih dari 1 query SQL, Anda perlu menyertakan BEGIN ... END untuk membiarkannya dieksekusi semua query SQL dalam Anda SQL Query Blok.

Jumat, 24 September 2010

Data Manipulation Language (DML)

Perintah-Perintah Data Manipulation Language (DML) :

1. SELECT (Menampilkan Data/Seleksi Data) merupakan syntak data manipulation language yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah query dirujukkan pada istilah SELECT. SELECT digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama.
Sintak untuk SELECT sebagai berikut :
SELECT [nama_field]
FROM [nama_tabel]
WHERE [kondisi]
Contoh penggunaan SELECT :
select * from cat; untuk menampilkan berapa banyak catalog yang kita buat,
select id_mhs from mahasiswa where nm_mhs = 'Dini'; untuk menampilkan id_mhs yang dimana nama mahasiswanya bernama Dini.
kondisi adalah syarat yang harus dipenuhi suatu data yang ditampilkan,
kondisi_aggrerat adalah syarat khusus untuk fungsi aggrerat.

2. INSERT (Memasukkan Data) merupakan syntax data manipulation language yang paling sering digunakan SQL. Bertujuan mengisikan data/record ke dalam suatu tabel. Pengisian data ini bisa berlaku untuk satu record penuh.
Contoh penggunaan INSERT :
insert into MAHASISWA (id_mhs,nm_mhs,alm_mhs)
values ('30109059','Dini Handayani','PGA');
insert into MAHASISWA values ('30109059','DiniHandayani','PGA');
Ada dua cara dalam memasukkan data ada yang menuliskan nama_fieldnya dulu, ada juga yang langsung.

3. UPDATE (Memperbaharui Data) merupakan syntax data manipulation language yang suka digunakan pada SQL. Pada prinsipnya update adalah memperbaharui data lama dengan data yang baru atau data yang terkini. Kesalahan pada satu record ini bisa terjadi hanya pada satu field saja atau seluruh field pada record tersebut.
Sintak untuk update sebagai berikut :
UPDATE [nama_tabel]
SET [nama_field]=[data_baru]
WHERE [nama_field]=[data_lama];
Contohnya :
update barang
set satuan_barang = 'UNIT'
where kode_barang = 'ELK-03';

4. DELETE (Menghapus Data) merupakan syntak data manipulation language yang suka digunakan SQL. Pada prinsipnya DELETE untuk menghapus data atau record. Penghapusan record bisa dilakukan secara keseluruhan, artinya seluruh record dalam tabel tersebut akan dihapus.
Sintak SQL untuk menghapus record dalam tabel :
DELETE FROM [nama_tabel]
WHERE [kondisi];
Adapun sintak SQL menghapus data keseluruhan :
DELETE FROM [nama_tabel];