Powered By Blogger

Jumat, 07 Januari 2011

RELASIONAL ENTITY


MAHASISWA KERJA TUGAS MATA KULIAH
ENTITY = MAHASISWA DAN TUGAS MATA KULIAH
RELASIONAL SHIP = KERJA

MAHASISWA :
  • NAMA
  • NPM
  • ALAMAT

TUGAS MATA KULIAH :
  • MAKALAH
  • KUIZ
  • PR

Minggu, 02 Januari 2011

Keuntungan SQL Plus dan PLSQL

Keuntungan SQL Plus dan PLSQL

SQL *PLUS dipergunakan untuk mengakses Oracle Database Server. Untuk
mengakses server dibuat sebuah  service  yang mengarahkan  client ke  server
terlebih dahulu (Database Alias). Tahapan untuk membuat service tersebut
sebagai berikut :
1.  Pada dialog diatas diberi service name TPRAKTIKUM. Klik next
2.  Pilih protocol yang menghubungkan antara client dengan server. Pada
kesempatan ini untuk menghunbungkan client ke server mempergunakan
protocol TCP/IP. Berikutnya klik Next.
3.  Pada field Host Name masukkan nama host name atau alamat IP address
server ORACLE, misalnya nt5. Klik Next
4.  Pada menu field Database SID,  pada layar System IDentifier, masukkan
nama database SID, misalnya lab4. Berikunya klik Next.
5.  Untuk mencoba service name yang sudah dibuat, perlu dilakukan testing.
Klik tombol Test Service, dan akan menuju layar testing.
6.  Pada layar  Conection Test masukkan username dan password. Silahkan
masukkan Username scott dan Password tiger, klik tombol test, maka akan
ditampilkan respon server. Jika sukses akan ada komentar ….successful..
jika gagal akan muncul komentar bahwa service yang dibuat gagal.
Setelah Service Name dibuat, kini masuk kedalam SQL *PLUS untuk mengakses
database server.
Buka SQL *PLUS dari menu  StartÆProgramÆOralce-OraHome81Æ
Aplication DevelopmentÆSQL PLUS.
Akan muncul dialog SQL plus sebagai berikut :

Masukkan pada User Name system, password manager dan Host String dengan
service name yang sudah dibuat tadi (TPRAKTIKUM). 

Keuntungan Penggunaan PL/SQL
      Integrasi
     Memungkinkan Aplikasi dan Oracle Server menggunakan Library yang dapat digunakan bersama-sama dalam bentuk stored procedure
     Peningkatan Kinerja
     Penggunaan PL/SQL, memungkinkan pengiriman perintah secara blok dalam satu perintah yang secara drastis dapat menurunkan trafik jaringan
     Modular. Bentuk modular memungkinkan banyak kemudahan yang dapat diperoleh
     Portable. PL/SQL adalah sarana yang asli dimiliki oleh Oracle Server, artinya, program PL/SQL dapat dengan mudah dipindahkan dari satu Oracle Server ke Oracle Server lainnya, meskipun dengan OS atau platform yang berbeda.
     Dapat mendeklarasikan Variable
     Dapat berupa Variable, Constant, Cursor dan Exception
     Penggunaan variable/identifier sangat memudahkan dalam membuat suatu perintah. Misalkan untuk membaca hasil suatu perintah SELECT untuk diproses dan hasilnya digunakan untuk melakukan proses lainnya
     Dapat menggunakan Struktur Kontrol :LOOP, FOR, WHILE
     Dapat menangani Error
     Error bisa dihasilkan/dibangkitkan oleh Oracle
     Server atau bisa dibangkitkan sendiri dengan sengaja
     Untuk mengantisipasi berbagai hal yang barangkali sulit untuk ditangani secara langsung menggunakan kontrol program

SQL PLUS

SQL *PLUS

SQL *PLUS dipergunakan untuk mengakses Oracle Database Server. Untuk
mengakses server dibuat sebuah  service  yang mengarahkan  client ke  server
terlebih dahulu (Database Alias). Tahapan untuk membuat service tersebut
sebagai berikut :
1.  Pada dialog diatas diberi service name TPRAKTIKUM. Klik next


2.  Pilih protocol yang menghubungkan antara client dengan server. Pada
kesempatan ini untuk menghunbungkan client ke server mempergunakan
protocol TCP/IP. Berikutnya klik Next.
   1
3.  Pada field Host Name masukkan nama host name atau alamat IP address
server ORACLE, misalnya nt5. Klik Next



4.  Pada menu field Database SID,  pada layar System IDentifier, masukkan
nama database SID, misalnya lab4. Berikunya klik Next.



5.  Untuk mencoba service name yang sudah dibuat, perlu dilakukan testing.
Klik tombol Test Service, dan akan menuju layar testing.
   2


6.  Pada layar  Conection Test masukkan username dan password. Silahkan
masukkan Username scott dan Password tiger, klik tombol test, maka akan
ditampilkan respon server. Jika sukses akan ada komentar ….successful..
jika gagal akan muncul komentar bahwa service yang dibuat gagal.


Setelah Service Name dibuat, kini masuk kedalam SQL *PLUS untuk mengakses
database server.
Buka SQL *PLUS dari menu  StartÆProgramÆOralce-OraHome81Æ
Aplication DevelopmentÆSQL PLUS.
Akan muncul dialog SQL plus sebagai berikut :
   3


Masukkan pada User Name system, password manager dan Host String dengan
service name yang sudah dibuat tadi (TPRAKTIKUM). 
Jika Login berhasil maka akan muncul Oracle SQL *PLUS sebagai berikut :



TABLESPACE
Untuk menyimpan obyek-obyek database dibutuhkan suatu ruang memori yang
disebut TABLESPACE. Untuk mengakses tablespace dibutuhkan sebuah account
user. Berikut ini perintah SQL untuk membuat tablespace, user dan perintah untuk
manipulasi tabel.
1.  Melihat tablespace   4
select * from user_free_space;
2.  Membuat tablespace
SQL>Create tablespace nama-tablespace datafile ‘nama-datafile.dat’ size 1M
autoextend on next 500K maxsize 2M;
3.  Mengubah ukuran tablespace
SQL>alter database datafile ‘nama-datafile.dat’ resize 2M;
4.  Menambah ukuran tablespace dengan cara menambahkan data file baru
SQL>alter tablespace dataku add datafile ‘nama-datafile.dat’ size 2M;
5.  Menghapus table space
SQL>drop tablespace nama-tablespace including contents;

Setelah Tablespace siap, maka langkah selanjutnya membuat account baru.
Account ini akan anda pergunakan selama praktikum.  Account  yang sudah ada
ketika instalasi selesai adalah SYS, SYSTEM dan SCOTT. Untuk membuat
account baru kita mempergunakan user SYS dan SYSTEM. Pergunakan
tablespace  yang tadi telah anda buat untuk menyimpan data anda selama
praktikum.  
1.  Membuat user baru dan dengan tablespace yang dipakai misalnya dtpraktek.
SQL>create user nama_user identified by password-user default
tablespace dtpraktek;
Parameter  nama_user adalah nama login, dan  password-user adalah
password user yang dipilih. Misalnya dipilih untuk nama_user user01. 
2.  Berikan hak akses user pada database. Misalnya hak akses  grant  dan
resource.
SQL> grant connect to user01;
SQL> grant resource to user01;
3.  Langkah berikutnya, lakukan sambungan dengan server dengan
mempergunakan user_name yang sudah dibuat tadi.
SQL> connect user01
Enter password: ******
Connected.

4.  Saat ini sudah tersambung dengan server dengan mempergunakan user01.
Buat tabel mahasiswa yang memiliki struktur nim varchar(5), nama
varchar(25), alamat varcahr(30).   5
SQL> create table mahasiswa (nim varchar(5), nama varchar(25), alamat
varchar(30));
5.  Untuk melihat tabel yang ada dalam tablespace mempergunakan perintah :
SQL> select * from tab;
6.  Untuk melihat struktur tabel dapat dilakukan dengan mempergunakan
perintah :
SQL>describe mahasiswa;
7.  Perintah  alter  berguna untuk melakukan perubahan tabel diantaranya
merubah tipe field, menambah field baru dan merubah nama tabel.
Merubah tipe field tabel :
SQL>alter table mahasiswa modify (nim number(5));
Menambah field tabel :
SQL>alter table mahasiswa add (usia number(2));
Mengganti nama tabel :
SQL>alter table mahasiswa rename to mhs;
8.  Untuk menambahkan data kedalam tabel, pergunakan perintah insert 
SQL>insert into mahasiswa values(1,’Sumanto’,’Sleman’);
9.  Data yang sudah disimpan dalam tabel dapat diedit dengan
memperguanakan perintah update.
SQL>update mahasiswa set nama = ‘Sumanto’ where nim=1;
10.  Untuk keperluan penghapusan data, pergunakan perintah :
SQL>delete from mahasiswa where nim=1;

CONSTRAINT
Constraint (konstrain) adalah aturan yang diberikan pada suatu tabel supaya data
yang dimasukkan lebih terjamin validitasnya. 
1.  Memberi konstrain pada saat membuat tabel :
SQL>create table mahasiswa(nim char(5) constraint pnim primary key, nama
char(20) constraint nnama not null, alamat char(30));
2.  Memberi konstrain pada tabel yang sudah ada :
SQL>alter table mahasiswa add constraint pnim primary key (nim);
SQL>alter table mahasiswa modify (nama char(20) constraint nnama not null);
3.  Menghapus konstrain :
SQL>alter table mahasiswa drop constraint nnama;   6
ORDER BY
Klausa ORDER BY digunakan untuk mengurutkan data yang di-query. Klausa
ORDER BY diikuti dengan nama kolom atau kolom alias kemudian diikuti klausa
jenis urutan yang kita inginkan. Jenis urutan bisa ASC (ascending) atau DESC
(descending). Sebagai ilustrasi, tampilkan semua data dengan cara diurutkan
ascending berdasarkan nama mahasiswa.
SQL> select * from mahasiswa order by nama;
SQL> select * from mahasiswa order by nama desc;
                       
WHERE
Klausa LIKE WHERE digunakan untuk membatasi query menurut kriteria
tertentu. Kriteria ini didefinisikan menggunakan bentuk perbandingan. Sebagai
ilustrasi, tampilkan data mahasiswa yang berasal dari Jogjakarta.
SQL> select * from mahasiswa where alamat = ‘Jogjakarta’;

LIKE
Klausa LIKE digunakan untuk membatasi query menurut nilai tertentu. Nilai ini
merupakan sebagian dari nilai suatu field. Sebagai ilustrasi, akan ditampilkan data
mahasiswa yang memiliki nama yang nama akhirnya mengandung huruf “ni”.
SQL> select * from mahasiswa where nama like ‘%ni’;

SQL *PLUS LANJUTAN

Pada pertemuan minggu kedua, akan dibahas tentang bagaimana
menampilkan data dari beberapa tabel yang terhubung oleh suatu kunci. Buat
sambungan ke server ORACLE dengan SQL *PLUS seperti minggu lalu, dan
ikuti latihan berikut :
1.  Buat tabel matakuliah dan tabel krs dengan tipe field :
  Tabel matakuliah terdiri dari field : kdmtk varchar(5), nm_mtk
varchar(20), sks number, dan field kdmtk tidak boleh null.
  Tabel krs, dengan field : nim varchar(5), kdmtk varchar(5), nilai char(1).
2.  Isi tabel matakuliah dan krs, dengan nomor mahasiswa sesuai dengan nomor
mahasiswa pada tabel krs sesuai dengan yang ada di tabel mahasiswa dan
kdmtk pada tabel krs sama dengan kdmtk pada tabel matakuliah. Kosongi
field nilai pada tabel krs.
3.  Tampilkan nama mahasiswa yang mengambil matakuliah yang memiliki
kode matakuliah ‘mt01’;
SQL> select nama from mahasiswa, krs where mahasiswa.nim=krs.nim and
krs.kdmtk='mt01';
4.  Tampilkan nama matakuliah dan sks dari matakuliah yang diambil
mahasiswa yang memiliki nomor mahasiswa ‘1’
SQL> select nm_mtk, sks from matakuliah, krs where matakuliah.kdmtk=krs.kdmtk
and krs.nim='1';
5.  Tampilkan nama mahasiswa yang mengambil matakuliah ‘Bahasa C’
SQL> select nama from mahasiswa, matakuliah, krs where
  2  mahasiswa.nim=krs.nim and
  3  krs.kdmtk=matakuliah.kdmtk and
  4  matakuliah.nm_mtk='Bahasa C';

GROUP BY
Klausa GROUP BY digunakan untuk mengelompokkan data hasil perintah group
function. Ilustrasi pemakaian GROUP BY :
SQL> select matakuliah.nm_mtk, count(krs.kdmtk) from matakuliah, krs where
  2  matakuliah.kdmtk=krs.kdmtk   8
  3  group by matakuliah.nm_mtk;

HAVING
Klausa HAVING dipergunakan untuk membatasi hasil query yang dihasilkan dari
klausa GROUP BY. 
SQL> select nama, count(sks) from mahasiswa, krs, matakuliah
  2  where mahasiswa.nim=krs.nim and
  3  matakuliah.kdmtk=krs.kdmtk
  4  group by mahasiswa.nama
  5  having count(sks)>2;

SUBQUERY
Subquery adalah query dalam query. Dalam menuliskan perintah select, kita dapat
mendefinisikan nilai kondisional dengan menggunakan perintah SELECT lagi.
Artinya ada perintah SELECT dalam perintah SELECT. Untuk ilustrasi,
tambahkan data mahasiswa yang nomor mahasiswanya (nim) tidak ada di tabel
krs, dan berikutnya coba perintah berikut : 
SQL> select nama from mahasiswa where nim in
  2  (select nim from krs group by nim);

VIEW, CONSTRAINT LANJUT
dan SQL DUMP

VIEW
View merupakan objek database seperti tabel namun secara fisik tidak memiliki
data. Isi data view merupakan hasil query dari sebuah atau beberapa tabel. View
disebut juga virtual tabel karena strukturnya seperti tabel tapi tidak memiliki data. 
1.  Untuk membuat view dengan perintah CREATE VIEW seperti contoh
berikut :
SQL> create view mhs_jogja as (
  2  select * from mahasiswa
  3  where alamat like 'J%');

View created.

2.  Untuk melihat view yang telah dibuat, diberikan perintah untuk melihat
view sebagaimana perintah untuk melihat data dalam tabel.
SQL> select * from mhs_joigja;
3.  Struktur field view dapat dilihat dengan mempergunakan perintah :
SQL> describe mhs_jogja;
4.  Data yang ditampilkan dalam view dapat diupdate, dengan catatan tidak
terdapat constraint yang menolak perubahan data. Sebagai contoh, untuk
merubah data dalam view dipergunakan perintah :
SQL> update mhs_jogja
  2  set nama = 'Abdullah'
  3  where nim = '1';
1 row updated.
5.  Jalankan perintah berikut untuk melihat perubahan yang terjadi akibat
perintah diatas.
SQL> select * from mhs_jogja;
6.  Untuk kepentingan merubah definisi view dapat dipergunakan perintah
berikut :
SQL> create or replace view mhs_jogja as   10
  2  (select * from mahasiswa);
7.  View dapat dihapus dengan perintah DROP
SQL> drop view jml_sks;
Untuk latihan buatlah view untuk tugas minggu kemarin nomor 1,3,5 atau 2,4,6.
Simpan tugas ini sebagai salah satu tugas minggu ini.

CONSTRAINT LANJUT
Ada lima jenis constraint yaitu PRIMARY
KEY, UNIQUE, FOREIGN KEY, CHECK dan NOT NULL. Pada tablespace
sudah terdapat tiga tabel yaitu tabel mahasiswa, tabel matakuliah dan tabel krs.
Ketiga tabel tersebut mempunyai relasi sebagai berikut :
Tabel KRS mempunyai ketergantungan pada tabel mahasiswa dan tabel
matakuliah. Sehingga field NIM yang ada di tabel KRS harus terdapat juga pada
tabel mahasiswa dan field KDMTK pada tabel KRS juga harus terdapat pada tabel
matakuliah. Sebelum ditambahkan constraint pada tabel krs, cobalah untuk
menambahkan data pada krs, dimana nim yang dimasukkan tidak terdapat pada
tabel mahasiswa dan kdmtk juga tidak terdapat pada tabel matakuliah.
Untuk menambahkan Integrity Constraint, tambahkan constraint pada field nim di
tabel mahsiswa (jika belum ada) dan field kdmtk pada tabel matakuliah (jika
belum ada). Untuk menambahkan constraint pada tabel-tabel tersebut, pergunakan
perintah :
SQL> alter table krs add constraint sk_nim
  2  foreign key (nim) references mahasiswa (nim)
  3  on delete cascade;  11

SQL> alter table krs add constraint sk_kdmtk
  2  foreign key (kdmtk) references matakuliah (kdmtk)
  3  on delete cascade;

Setelah ditambahkan constraint pada tabel krs, cobalah untuk menambah data
yang nim-nya tidak terdapat pada tabel mahasiswa dan kdmtk-nya tidak terdapat
pada tabel matakuliah. Apa yang terjadi? Tambahkan komentar anda pada tugas
minggu ini.

SQL DUMP

Pemakaian bahasa SQL dengan mengetikkan tiap baris pada SQL *PLUS akan
menimbulkan kesulitan jika perintah yang diberikan cukup panjang. Perintah SQL
dapat di buat dalam file teks dengan mempergunakan editor apapun (notepad, edit,
wordpad dan lain sebagainya). Pemakaian SQL pada file eksternal ini sama
dengan SQL DUMP yang terdapat pada MySQL. Untuk pemakaian SQL DUMP,
ikuti instruksi berikut :
1.  Buat direktori  script pada  c:\oracle untuk menyimpan script SQL yang
anda buat pada praktikum minggu ini dan minggu depan.
2.  Buka notepad dan ketikkan perintah SQL yang anda kehendaki dan simpan
file dengan akhiran *.sql (script1.sql) sebagai contoh :
SQL> select table_name from user_tables;

3.  Dari prompt SQL *PLUS ketikkan perintah untuk mengeksekusi file
tersebut dengan disertakan path directori.
SQL> @c:\oracle\script\script1.sql

4.  Buat script baru, dan isikan perintah SQL berikut :
select nama, count(sks) from mahasiswa, krs, matakuliah
where mahasiswa.nim=krs.nim and
matakuliah.kdmtk=krs.kdmtk
group by mahasiswa.nama
having count(sks)>2;

PL/SQL

PL/SQL singkatan dari  Procedural Language/Structured Query Language.
PL/SQL menambahkan SQL dengan bahasa-bahasa prosedural. Dengan SQL,
pekerjaan manipulasi data lebih mudah, namun akan lebih maksimal jika
ditambahkan dengan bahasa prosedural. Sebagai contoh, pemanfaatan fungsi
control IF-THEN-ELSE atau looping.  Hal ini tidak bisa dilakukan dengan
mempergunakan SQL murni. Untuk hal inilah dibutuhkan PL/SQL, bahasa
pemrograman yang menggabungkan fleksibilitas SQL (bahasa tingkat empat atau
4GL) dengan bahasa prosedural (bahasa tingkat tiga atau 3GL). Bentuk umum
dari suatu PL/SQL adalah :
DECLARE
BEGIN
exception
end;
/
Dalam PL/SQL blok penanganan komunikasi dengan database dilakukan dengan
variabel. Variabel adalah suatu alokasi memori untuk menyimpan suatu nilai.
Nilai ini dapat diambil dari database atau dimasukkan ke database. Berikut ini
contoh deklarasi variabel dalam PL/SQL.
Declare
vnama varchar2(12);
vnim number(4) := 3452;
Pada contoh diatas dideklarasikan dua buah variabel yaitu vnama dan vnim
dengan tipe data varchar2 dan number. Variabel vnama tidak memiliki nilai
default dan variabel vnim memiliki nilai default 3452. 
Jenis data yang dapat dipergunakan dalam PL/SQL adalah : Number, Char,
Varchar2, Date, Long, Decimal (Real), Integer (Int) dan Boolean.   13
Selain dengan cara mendefinisikan tipe data variabel, juga ada cara lain untuk
mendefinisikan tipe data dengan mempergunakan %TYPE. Cara ini memberikan
tipe data variabel dengan tipe field pada tabel. Berikut ini contoh definisi tipe data
dengan mempergunakan %TYPE.
Declare
vnama mahasiswa.nama%type;
vnim mahasiswa.nim%type := 3452;
Struktur suatu tabel dapat diambil dan disimpan dalam suatu variabel array. Untuk
memperoleh struktur tabel, dipergunakan perintah %ROWTYPE. 
Declare
vnama mahasiswa.nama%type;
ArMtk mtk%ROWTYPE;
Pada contoh diatas, struktur tabel  mtk  diambil dengan  %ROWTYPE dan
diletakkan dalam array ArMtk.
Untuk lebih jelas tentang PL/SQL, silahkan anda ikuti latihan berikut ini.
1.  Buatlah script berikut ini dalam file  *.sql pada direktory script seperti
pertemuan terdahulu.
DECLARE
    a NUMBER := 3;

BEGIN
    a := a + 1;

END;
/

Jalankan  script ini dari promt sql *plus. Maka pada layar sql *plus akan
dihasilkan keluaran  PL/SQL procedure successfully completed.  Untuk
menampilkan hasil perhitungan diatas tambahkan perintah   
dbms_output.put_line(a); dibawah perintah a := a + 1. Simpan script tersebut
dan jalankan kembali dari prompt SQL *PLUS. Selain itu juga tambahkan
perintah set serveroutput on size 20000 diawal script (diatas declare).
Catatan :  perintah dbms_output.put_line(nama_field); dipergunakan untuk
menampilkan isi suatu field dan variabel pada PL/SQL.
Pergunakan perintah ini untuk menampilkan isi field dan
variabel.  14
2.  Dengan mempergunakan SQL DUMP, buatlah tabel T1 dengan menyalin
script berikut :
CREATE TABLE T1(
    e INTEGER,
    f INTEGER
);

DELETE FROM T1;
INSERT INTO T1 VALUES(1, 3);
INSERT INTO T1 VALUES(2, 4);

Buat script PL/SQL berikut ini, dan berikan komentar dari hasil eksekusi
script ini pada laporan mingguan.
DECLARE
    a NUMBER;
    b NUMBER;

BEGIN
    SELECT e,f INTO a,b FROM T1 WHERE e>1;
    INSERT INTO T1 VALUES(b,a);

END;
/

3.  Perintah SQL untuk menampilkan isi tabel tidak dapat dilakukan secara
langsung. Perintah SQL yang dimaksud adalah perintah select [nama_field]
from [nama_tabel]. Untuk mengambil isi tabel dilakukan dengan meletakkan
isi field yang dikehendaki kedalam variabel memori dengan perintah select
[nama_field] into [variabel_memori] from [nama_tabel].  Lebih jelas tentang
hal ini silahkan anda coba script berikut :
DECLARE
     vnim varchar2(5) := 1;

BEGIN
   select nama
   from mahasiswa
   where nim=vnim;

END;
/

Bila script diatas dieksekusi maka akan dianggap ada kesalahan, padahal
secara logika sudah benar. Edit script diatas sehingga sama dengan script
berikut, dan berikan komentar anda tentang hal ini pada laporan mingguan.  15
DECLARE
     vnim varchar2(5) := 1;
     vnama mahasiswa.nama%type;

BEGIN
   select nama into vnama
   from mahasiswa
   where nim=vnim;

END;
/

PERINTAH KONDISIONAL
PL/SQL mempunyai perintah kondisional IF-THEN-ELSE. Sintaksnya adalah
sebagai berikut :
IF ekspresi_boolean1 THEN 
 urutan_perintah1;
[ELSIF ekspresi_boolean2 THEN
 urutan_perintah2;]
[ELSE
 urutan_perintah3;
END IF];

Lebih jelas mengenai pemakaian If adalah sebagai berikut :
DECLARE
    a NUMBER;
    b NUMBER;

BEGIN
    SELECT e,f INTO a,b FROM T1 WHERE e>1;
    IF b=1 THEN
        INSERT INTO T1 VALUES(b,a);
    ELSE
        INSERT INTO T1 VALUES(b+10,a+10);
    END IF;
END;
/

LOOP
PL/SQL mendukung pengeksekusian pertah berulang menggunakan loop. Jenis
loop yang terdapat dalam PL/SQL adalah :
1.  Simple Loops
Sintaks simple loop adalah :
LOOP
Urutan_perintah  16
END LOOP
Untuk menghentikan proses loop dipergunakan perintah EXIT dengan
sintaks :
EXIT [When kondisi];
Berikut ini contoh penggunaan LOOP :
DECLARE
    i NUMBER := 1;

BEGIN
    LOOP
        INSERT INTO T1 VALUES(i,i);
        i := i+1;
        EXIT WHEN i>100;
    END LOOP;

END;
/

2.  While Loops
Sintaks dari While Loop adalah :
WHILE kondisi LOOP
 urutan_perintah
END LOOP;

Jika kondisi bernilai TRUE, urutan_perintah akan terus dieksekusi. Dalam
loop ini perintah EXIT dapat digunakan jika dibutuhkan. Berikut ini contoh
penggunaan while loop.
DECLARE
    i NUMBER := 1;
    vhitung number;

BEGIN
    WHILE i <= 20 LOOP
        vhitung := i ** 2;
        INSERT INTO T1 VALUES(i, vhitung);
        vhitung := 0;
        i := i+1;
    END LOOP;

END;
/

3.  Numeric FOR Loops
Sintaks dari Numeric FOR Loops adalah :  17
FOR penghitung IN [REVERSE] batas_bawah..batas_atas LOOP
urutan_perintah;
END LOOP;

Berikut ini contoh dari Numeric FOR Loops :
Declare
vhit number;

BEGIN
FOR vhitung IN 1..20 LOOP
        vhit := vhitung ** 3;
        Insert into t1 values (vhitung, vhit);
END LOOP;
END;
/

Menangani ERROR
Penanganan error dalam PL/SQL lebih mudah dengan adanya bagian
EXCEPTION dalam blok PL/SQL. Tidak seperti pemrograman dalam bahasa
pemrograman lain seperti C yang harus menangkap error dengan mempergunakan
perintah if. EXCEPTION dibagi dalam dua jenis yaitu :
1.  Predefined Exception
Merupakan kondisi exception yang telah didefinisikan dalam oracle,
diantaranya adalah : NO_DATA_FOUND, DUP_VAL_ON_INDEX,
TOO_MANY_ROWS, INVALID_NUMBER, ZERO_DEVIDE dan
PROGRAM_ERROR. Berikut ini contoh predefined exception.
set serveroutput on size 20000
DECLARE
     vnim varchar2(5) := 12345;
     vnama mahasiswa.nama%type;
     vkomen char(25);

BEGIN
   select nama into vnama
   from mahasiswa
   where nim=vnim;

exception
when no_data_found then
   vkomen := 'Data tidak ada';
   dbms_output.put_line(vkomen);

END;
/
  18
2.  User-Defined Exception
User-Defined Exception merupakan  penanganan error yang didefinisikan
oleh programmer dalam suatu script. Variabel exception dideklarasikan dan
kemudian dalam program yang dapat dieksekusi, kondisi exception
ditangkap dengan mempergunakan perintah  if dan menyerahkannya ke
variabel exception dengan perintah RAISE. Berikut ini contoh user-defined
exception.
set serveroutput on size 20000

DECLARE
vnama matakuliah.nm_mtk%type;
vsks matakuliah.sks%type;
e_jml_sks exception;
vkomentar char(25);

BEGIN
select nm_mtk, sks into vnama, vsks from matakuliah
where kdmtk = 'mt01';

if vsks < 4 then
   RAISE e_jml_sks;
end if;

EXCEPTION
when e_jml_sks then
   vkomentar := 'Bobot SKS dibawah 4';
   dbms_output.put_line(vkomentar);
end;
/


PROCEDURE, FUNCTION DAN TRIGGER

Procedure, function dan Trigger termasuk  named PL/SQL block. Artinya blok
PL/SQL ini memiliki nama. Seperti layaknya Procedure dan Function pada bahasa
pemrograman yang sudah dipelajari (Visual basic, Delphi, Bahasa C dan lainnya).

Procedure
Procedure merupakan blok yang memiliki nama. Pemanggilan procedure
dilakukan melalui blok PL/SQL lain. Penggunaan procedure merupakan fasilitas
yang paling sering digunakan dalam membuat kontrol program di database
Oracle. Procedure memiliki struktur yang mudah dipahami, terletak dalam
database, dan mudah dipanggil untuk dieksekusi. Seperti dalam PL/SQL yang
telah dipelajari pada nagian lalu, hanya saja untuk bagian DECLARE diganti
dengan CREATE PROCEDURE. Cobalah prosedur berikut ini.
CREATE OR REPLACE PROCEDURE Tambah_Mahasiswa(
        vnim mahasiswa.nim%type,
        vnama mahasiswa.nama%type,
        valamat mahasiswa.alamat%type) as
BEGIN
INSERT INTO mahasiswa (nim, nama, alamat)
VALUES(vnim, vnama,valamat);
END Tambah_Mahasiswa;
/
Procedure diatas berfungsi untuk menambah data pada tabel mahasiswa. Nama
prosedur adalah  Tambah_Mahasiswa. Untuk penambahan data dapat dilakukan
dengan mempergunakan pemanggilan procedure diikuti parameter. Sehingga tidak
mempergunakan perintah  Insert into …. Penambahan data dengan
mempergunakan procedure tersebut dapat dilakukan dengan perintah berikut :
BEGIN
Tambah_Mahasiswa('11','Banu','Sleman');
END;
/
  20
Perintah tersebut akan memanggil procedure  Tambah_Mahasiswa dengan
membawa parameter  11, Banu, Sleman. Penambahan data mahasiswa dilakukan
dengan perintah Insert into …. yang terdapat pada procedure Tambah_Mahasiswa. 
Berikut ini script procedure yang agak berbeda dengan script diatas, dimana salah
satu variabel yang dimasukkan diproses terlebih dahulu (variabel b).
CREATE OR REPLACE PROCEDURE AddT1
(a NUMBER, b OUT NUMBER) AS

BEGIN
    b := a * 4;
    INSERT INTO T1 VALUES(a, b);

END;
/

Jalankan script tersebut (procedure AddT1) dan cek dengan script berikut :
DECLARE
v number;
BEGIN
addt1(10,v);
END;
/

Script diatas menambahkan data kedalam tabel T1 dengan nilai field pertama 10
dan nilai field kedua (v) dari hasil perhitungan dalam procedure.

FUNCTION
Function merupakan PL/SQL blok yang mirip dengan procedure. Perbedaannya
adalah function mengembalikan suatu nilai dan dipanggil melalui suatu ekspresi.
Untuk membuat function, diawali dengan CREATE OR REPLACE  FUNCTION.
Sama seperti membuat procedure, kalimat OR REPLACE digunakan untuk
menimpa function yang sudah ada jika namanya sama. Berikut ini contoh
function. 
CREATE OR REPLACE FUNCTION HitSks(vnim krs.nim%type)

RETURN matakuliah.sks%type is 
vsks matakuliah.sks%type;

Begin
select count(sks) into vsks from krs, matakuliah
where krs.nim = vnim and krs.kdmtk=matakuliah.kdmtk;
  21
RETURN vsks;
END HitSks;
/ 

Dari prompt SQL *PLUS eksekusi script function diatas. Fungsi  HitSks dapat
dipergunakan dengan pemanggilan fungsi dengan perintah berikut ini pada prompt
SQL *PLUS :
SQL> select nama, hitsks(nim) from mahasiswa where hitsks(nim)>2;

Pemanggilan fungsi dapat dilakukan di dalam suatu blok procedure. Semua nilai
yang dikembalikan oleh function tersebut dapat dipergunakan untuk input suatu
proses dalam suatu ekspresi didalam procedure. Justru kenyataanya, function
banyak dipergunakan didalam blok procedure.

TRIGGER
Trigger merupakan PL/SQL blok yang mirip dengan procedure. Jika procedure
dijalankan secara eksplisit lewat pemanggilan procedure, trigger dijalankan secara
implisit lewat ‘pemicu’. Pemicu yang dimaksud adalah Data Manipulation
Language (DML) yang terdiri atas perintah INSERT, UPDATE atau DELETE
dari suatu tabel database. Trigger bermanfaat untuk :
  Mengatur integrity constraint yang kompleks yang tidak mungkin ditangani
oleh sintaks-sintaks pembuatan tabel.
  Audit database dengan cara memasukkan informasi perubahan dan siapa yang
mengubah saat ada user yang mengubah data.
  Secara otomatis memberi sinyal program lain untuk melakukan sesuatu jika isi
tabel diubah.
Trigger dapat didefinisikan untuk operasi INSERT, UPDATE dan DELETE.
Trigger ini dapat dipicu sebelum (BEFORE) atau sesudah (AFTER) operasi
berjalan. Trigger juga berlaku untuk tingkat baris (FOR EACH ROW) yang
berlaku untuk setiap baris tabel saat dimanipulasi, atau tingkat seluruh tabel yang
dijalankan untuk seluruh tabel saat trigger itu dijalankan.   22
Buatlah tabel dengan nama tlog dengan field user varchar(25), tanggal
varchar(30), komentar varchar(35). 
Ketikkan script trigger berikut ini dan jalankan di prompt SQL *PLUS.
CREATE OR REPLACE TRIGGER TRIGUBAH
BEFORE DELETE OR INSERT OR UPDATE ON MAHASISWA

BEGIN

insert into tlog
values (user, to_char(sysdate, 'Month DY, DD, HH24:MI'),'Tabel telah diubah');

END;
/
Trigger tersebut bernama TRIGUBAH, yang berguna untuk melakukan
dokumentasi jika tabel mahasiswa diubah. Identitas perubah disimpan dalam field
user, tanggal perubahan dan komentar. Ubah  script trigger diatas menjadi script
trigger berikut ini :
CREATE OR REPLACE TRIGGER TRIGUBAH
BEFORE DELETE OR INSERT OR UPDATE ON MAHASISWA

BEGIN

If deleting then
   insert into tlog
   values (user, to_char(sysdate, 'Month DY, DD, HH24:MI'),'Data pada tabel
dihapus');
elsif inserting then
   insert into tlog
   values (user, to_char(sysdate, 'Month DY, DD, HH24:MI'),'Data pada tabel
ditambah');
elsif updating then
   insert into tlog
   values (user, to_char(sysdate, 'Month DY, DD, HH24:MI'),'Data pada tabel
diubah');
end if;

END;
/

Jalankan script trigger tersebut dan cobalah untuk menambah, mengupdate dan
menghapus data  pada tabel mahasiswa. Lihat isi tabel tlog. Tambahkan komentar
anda pada laporan tugas mingguan.

PL-SQL

PL/SQL
PL/SQL (Procedural Language/Structured Query Language) merupakan sebuah penggabungan antara bahasa pemrograman prosedural (PL) dan SQL syntax. PL/SQL adalah fasilitas yang disediakan Oracle sehingga pengguna dapat memanfaatkan konsep pemrograman. Dalam PL/SQL dapat digunakan perintah untuk memanipulasi data yang ada dalam database Oracle. PL/SQL membentuk pemrograman terstruktur dalam memproses data.
Beberapa kelebihan PL/SQL dalam database Oracle :
·         PL/SQL dapat digunakan di server sehingga client hanya dapat mengakses didalam server.
·          Penggunaan PL/SQL mudah dimengerti oleh setiap pengguna.
·         PL/SQL dapat didesain khusus untuk database Oracle dalam menggunakan program aplikasi.
Aturan penulisan:
  • Dapat ditulis dalam beberapa baris (tidak harus dalam satu baris perintah)
  • Dapat berupa nested blok
  • Karakter dan literal diapit oleh tanda kutip
  • Setiap perintah/blok diakhiri dengan titik koma(;)
  • Komentar diawali dengan tanda min dua kali(--) atau diapit dengan tanda /*…*/
  • Pemberian nilai menggunakan :=
  • Dapat menggunakan Bind Variable
  • Tanda garis miring(/) berarti “run”
Struktur PL/SQL
Struktur PL/SQL mirip dengan struktur bahasa pascal atau delphi yang menggunakan struktur blok, sehingga akan mempermudah pengertian dalam pemrograman dengan PL/SQL. Struktur Blok berisi perintah SQL dengan kondisi yang berbeda. Perintah PL/SQL dapat menangani kesalahan saat dijalankan. Setiap pengetikan dengan menggunakan PL/SQL dalam SQL*Plus selalu diakhiri dengan tanda /(slash). Sintaks penggunaan PL/SQL adalah sebagai berikut :
Declare
   Begin
      Exception
End
Pemanggilan PL/SQL :
  • Langsung dari SQL Plus
  • Dari Aplikasi
  • Dari PL/SQL lainnya
Sub Program :
  1. Nama dari blok PL/SQL yang dapat menerima parameter dan dapat dipanggil terdapat dua jenis:
·         Sebuah prosedur yang digunakan untuk melakukan suatu kegiatan tertentu
·         Sebuah fungsi yang digunakan untuk menghitung suatu nilai
  1. Menggunakan struktur blok PL/SQL standart
  2. Modular dapat dipergunakan berulang-ulang, ditingkatkan/dikembangkan dan mudah dalam perawatan.
Struktur diatas dapat dijelaskan sebagai berikut :
  1. Bagian Judul (Header)
Bagian ini hanya digunakan jika PL/SQL diberikan nama,misalnya untuk prosedur atau fungsi. Bagian ini berisi nama blok,daftar parameter, dan pengembalian hasil (return) jika blok adalahfungsi.
  1. Bagian Deklarasi (declaration)
Bagian ini untuk membuat deklarasi mengenai semua variable dan konstanta yang direferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini dimulai dengan perintah DECLARE. Jika tidak ada variable atau konstanta yang ingin dideklarasikan bagian ini boleh dihilangkan, bersifat optional.
  1. Bagian Eksekusi (Execution)
Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis. Bagian eksekusi ini harus dimulai dengan perintah BEGIN.
  1. Bagian Perkecualian (Exception)
Bagian ini memuat cara menangani kesalahan-kesalahan (error) pada waktu eksekusi program PL/SQL, bersifat optional. Jika program tidak memuat cara menangani kesalahan, bagian ini boleh dihilangkan.Setiap pernyataan PL/SQL harus diakhiri dengan tanda titik koma(;) dan semua program PL/SQL harus diakhiri dengan perintah END.
Bentuk Umum Struktur PL/SQL
DECLARE
            variabel tipe_data;
            konstanta CONSTANT tipe_data := nilai;
            ...
BEGIN
            statement_1;
            statement_2;
            ...
EXCEPTION
            WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
            ...
END;
DBMS_OUTPUT merupakan paket yang disediakan oleh Oracle PL / SQL dan PUT_LINE merupakan salah satu prosedur yang dikemas. Menampilkan nilai-nilai pada SQL Plus * terminal yang harus diaktifkan dengan SERVEROUTPUT SET ON terlebih dahulu. Untuk menjalankan kode sampel ini, login ke SQL * Plus. PL / SQL blok diakhiri dengan tanda garis miring / atau garis byitself.
Tipe Data
  1. Tipe Data dasar :
·         Numerik
·         NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT, NUMERIC, REAL, SMALLINT
·         Karakter
·         VARCHAR2, CHAR, LONG
·         DATE
·         BOOLEAN
·         ROWID
  1. Tipe Data tambahan : RECORD, ARRAY
Type data yang dapat dikenali dalam PL/SQL dapat berupa type data SQL dan type data seperti :
1.      BOOLEAN
Dipakai untuk menyatakan data logika, yaitu TRUE(benar), FALSE(salah), dan NULL(kosong).
2.      BINARY_INTEGER
Digunakan untuk mendeklarasikan bilangan yang tidak mempunyai angka desimal. Tipe dataNATURAL dan POSITIVE merupakan subset dariBINARY_INTEGER.
3.      %TYPE
Tipe data ini dipakai untuk menandakan bahwa variabelyang deklarasikan sama dengan tipe data dari kolom tabel tertentu.
4.      %ROWTYPE
Tipe data ini menandakan bahwa sekelompok variabel adalah sama dengan tipe data darirow suatu tabel tertentu.
5.      Tabel dan Record
Tipe data komposit untuk pemakaian yang lebih kompleks.

Variabel dan Konstanta
Pada bagian deklarasi ditempatkan variable dan konstanta yang dipakai oleh pernyataan PL/SQL yang dibuat.
·         Variabel adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di memori komputer. Dapat menerima nilai baru atau sebaliknya diubah pada saat program dieksekusi Bentuk Umum :
variable_name datatype [NOT NULL := value ];
Keterangan :
·         Variable_name adalah nama variabel.
·         Datatype adalah valid PL / SQL datatype.
·         NOT NULL adalah sebuah spesifikasi opsional pada variabel.
·         Nilai atau DEFAULT juga merupakan spesifikasi opsional, di mana anda bisa menginisialisasi variabel.
·         Setiap deklarasi variabel adalah pernyataan terpisah dan harus diakhiri dengan titik koma.
Ketika variabel ditetapkan sebagai TIDAK NULL, Anda harus menginisialisasi variable ketika dideklarasikan. Contoh di bawah ini menyatakan dua variabel, salah satunya adalah tidak null.
Nilai variabel yang bisa berubah dalam pelaksanaan atau pengecualian bagian PL / SQL Block. Kita dapat menempatkan nilai ke variabel dalam dua cara yang diberikan di bawah ini.
  1. Kita dapat langsung memberikan nilai pada variabel. Sintaks Umum adalah:  variable_name:=  value;
  1. Kita dapat menempatkan nilai ke variabel langsung dari kolom database dengan menggunakan SELECT… INTO statement. INTO pernyataan.
·         Konstanta
Digunakan untuk menyimpan sebuah nilai di memori komputer. Nilai yang disimpan bersifat tetap (konstan). Nilai ditentukan pada saat deklarasi dibuat sehingga nilainya tetap pada saat program dieksekusikan.
Contoh Deklarasi Konstanta :
DECLARE
pi CONSTANT real             := 3.14;
lebar CONSTANT integer        := 100;
Komentar
·       Digunakan untuk memudahkan proses maintenance
·         Jenis komentar :
·       /* ... */   : untuk beberapa baris komentar
·       -- ...      : untuk satu bari komentar
Contoh :
/* Ini adalah komentar Oracle */
-- Ini juga komentar Oracle
PL/SQL (Procedural Language/Structure Query Language) adalah suatu blok yang berisi skrip-skrip bahasa prosedural. PL/SQL merupakan bahasa pemrograman procedural. PL/SQL dapat meningkatkan kinerja database
Struktur Blok PL/SQL
      Terdapat tiga bagian :
     Bagian pendeklarasian tipe data (opsional)
     Bagian penulisan perintah
     Bagian eksepsi (opsional)
PL / SQL mendukung variabel, kondisi, loop dan pengecualian. Array juga didukung, meskipun dengan cara yang agak tidak biasa, yang melibatkan penggunaan PL / SQL koleksi. PL / SQL koleksi adalah topik yang agak maju. Implementasi dari versi 8 dan seterusnya Oracle Database telah memasukkan fitur yang berhubungan dengan objek-orientasi. PL / SQL program unit (dasarnya kontainer code) dapat dikompilasi ke database Oracle. Pemrogram sehingga dapat menanamkan PL / SQL unit fungsionalitas ke dalam database secara langsung. Mereka juga dapat menulis skrip yang berisi PL / SQL program unit yang dapat membaca ke database menggunakan alat Oracle SQL * Plus.
Setelah unit program telah disimpan ke dalam database, mereka menjadi tersedia untuk eksekusi di lain waktu. Sementara programmer dapat dengan mudah menanamkan Data Manipulation Language (DML) laporan langsung ke / kode mereka PL SQL lurus ke depan dengan menggunakan statemen SQL, Data Definition Language (DDL) membutuhkan lebih kompleks "Dynamic SQL" pernyataan yang akan ditulis dalam kode / PL SQL. Namun, pernyataan DML mendukung mayoritas PL / SQL code dalam aplikasi perangkat lunak khas.
Dalam kasus PL / SQL SQL dinamis, versi awal dari Database Oracle diperlukan penggunaan perpustakaan paket DBMS_SQL rumit Oracle. versi lebih baru memiliki namun memperkenalkan sederhana "Native Dynamic SQL", bersama dengan sintaks terkait SEGERA MELAKSANAKAN.
Oracle Corporation lazim menambah fungsionalitas setiap rilis paket dengan berturut-turut dari Database Oracle.


TPengecualian, kesalahan yang timbul selama pelaksanaan kode, memiliki satu dari dua jenis:
  1. TPredefined pengecualian
  2. TDitetapkan pengguna pengecualian.
Tipe data  utama dalam PL / SQL termasuk NOMOR, INTEGER, CHAR, VARCHAR2, DATE, TIMESTAMP, dll TEKS. Fungsi di PL / SQL adalah kumpulan SQL dan / PL SQL laporan yang melakukan tugas dan harus mengembalikan nilai ke lingkungan menelepon. fungsi yang didefinisikan pengguna digunakan untuk melengkapi ratusan fungsi yang dibangun oleh Oracle.Simak
Baca secara fonetik
 Ada dua jenis fungsi dalam PL / SQL. Fungsi tradisional ditulis dalam bentuk:
TCREATET TORT TREPLACET TFUNCTIONT T<Tfunction_nameT>T T[(TinputT/Toutput variable declarationsT)]T TRETURNT return_type
T[TTAUTHIDT T<TCURRENT TUSERT | DEFINERT>TT]T T<TIS|AST>
               T[Tdeclaration blockT]
TBEGIN
               T<TPLT/TTSQLT block TWITHT TRETURNT statementT>
        TRETURNT T<Treturn_valueT>;
T[TTEXCEPTION
               TEXCEPTIONT blockT]
        TRETURNT T<Treturn_valueT>;
TENDTT;
Penulisan funsi tabel :
TCREATET TORT TREPLACET TFUNCTIONT T<Tfunction_nameT>T T[(TinputT/Toutput variable declarationsT)]T TRETURNT return_type
T[TTAUTHIDT T<TCURRENT TUSERT | DEFINERT>TT]T T[TT<TAGGREGATE | PIPELINEDT>TT]T T<TIS|USINGT>
               T[Tdeclaration blockT]
TBEGIN
               T<TPLT/TTSQLT block TWITHT TRETURNT statementT>
        PIPE TROWT T<Treturn typeT>;
        TRETURNTT;
T[TTEXCEPTION
               TEXCEPTIONT blockT]
        PIPE TROWT T<Treturn typeT>;
        TRETURNTT;
TENDTT;
  • Numeric variables
variable_name NUMBER(P[,S]) := VALUE;
Tuntuk mendefinisikan sebuah variabel numerik, programmer menambahkan para NOMOR tipe variabel dengan definisi nama. Untuk menentukan presisi (opsional) (P) dan skala (opsional) (S), salah satu lebih lanjut dapat menambahkan ini dalam kurung bulat, dipisahkan dengan koma. ("Precision" dalam konteks ini mengacu pada jumlah digit yang variabel dapat menahan, "skala" mengacu pada jumlah digit yang dapat mengikuti titik desimal.)T TSebuah pilihan tipe data lain untuk variabel numerik akan mencakup: binary_float, binary_double, Desember, desimal presisi, double, float, integer, int, numerik, nyata, smallint, binary_integer

·         TCharacter variables

variable_name TVARCHAR2TT(TLT)T T:=T T'Text'TT;
TUntuk mendefinisikan sebuah variabel karakter, programmer biasanya menambahkan para VARCHAR2 tipe variabel dengan definisi nama. Ada berikut dalam kurung jumlah karakter maksimum yang dapat menyimpan variabel. Tipe data lain untuk variabel karakter meliputi: varchar, char, panjang, mentah, panjang mentah, nchar, nchar2, CLOB, gumpalan, bfile
TPL / SQL fungsi analogi ke tertanam bahasa prosedural yang terkait dengan database relasional lainnya. Sybase ASE dan Microsoft SQL Server telah Transact-SQL, PostgreSQL memiliki PL / DB2 pgsql (yang mencoba untuk meniru PL / SQL ke mana), dan IBM termasuk SQL prosedural Bahasa, [3] yang sesuai dengan / standar SQL ISO SQL PSM .T TPara desainer dari PL / SQL model sintaks pada bahwa Ada. Baik Ada dan PL / SQL memiliki Pascal sebagai nenek moyang yang sama, dan PL / SQL juga menyerupai Pascal dalam berbagai aspek. Struktur paket / PL SQL mirip struktur Pascal program dasar atau unit Borland Delphi. Pemrogram dapat mendefinisikan data global-jenis, konstanta dan variabel statis, publik dan swasta, dalam sebuah paket / PL SQL.T
TPL / SQL juga memungkinkan untuk definisi kelas dan instantiate ini sebagai obyek dalam PL / SQL code. Ini menyerupai penggunaan dalam bahasa pemrograman berorientasi objek seperti Object Pascal, C dan Java. PL / SQL merujuk kepada kelas sebagai suatu "Abstrak Data Type" (ADT) atau "User Defined Type" (UDT), dan mendefinisikan sebagai tipe data SQL Oracle-sebagai lawan jenis / PL SQL yang ditetapkan pengguna, yang memungkinkan yang digunakan baik dalam Engine Oracle SQL dan Oracle PL / SQL engine. Constructor dan metode dari Tipe Data Abstrak ditulis dalam PL / SQL. The Tipe Data Abstrak dihasilkan dapat beroperasi sebagai kelas objek dalam PL / SQL. objek tersebut juga dapat bertahan sebagai nilai-nilai kolom dalam tabel database Oracle.
TPL / SQL pada dasarnya berbeda dari Transact-SQL, meskipun kesamaan dangkal. Porting kode dari satu ke yang lain biasanya melibatkan kerja non-sepele, bukan hanya karena perbedaan dalam fitur set dari dua bahasa, tetapi juga karena perbedaan yang sangat signifikan dalam cara menangani Oracle dan SQL Server dengan concurrency dan penguncian.T
TProyek Fyracle bertujuan untuk memungkinkan eksekusi PL / SQL code dalam open-source database Firebird.
Pembahasan kali ini menunjukkan kepada kita bagaimana menyusun aliran kontrol melalui program PL/SQL. Kita akan mempelajari bagaimana perintah-perintah dihubungkan dengan struktur-struktur kontrol sederhana namun powerful, yang memiliki Tsingle entryT dan Texit pointT. Secara bersama-sama, struktur-struktur ini dapat menangani berbagai situasi. Penggunaan yang tepat akan menghasilkan program terstruktur yang baik.
Keuntungan Penggunaan PL/SQL
      Integrasi
     Memungkinkan Aplikasi dan Oracle Server menggunakan Library yang dapat digunakan bersama-sama dalam bentuk stored procedure
     Peningkatan Kinerja
     Penggunaan PL/SQL, memungkinkan pengiriman perintah secara blok dalam satu perintah yang secara drastis dapat menurunkan trafik jaringan
     Modular. Bentuk modular memungkinkan banyak kemudahan yang dapat diperoleh
     Portable. PL/SQL adalah sarana yang asli dimiliki oleh Oracle Server, artinya, program PL/SQL dapat dengan mudah dipindahkan dari satu Oracle Server ke Oracle Server lainnya, meskipun dengan OS atau platform yang berbeda.
     Dapat mendeklarasikan Variable
     Dapat berupa Variable, Constant, Cursor dan Exception
     Penggunaan variable/identifier sangat memudahkan dalam membuat suatu perintah. Misalkan untuk membaca hasil suatu perintah SELECT untuk diproses dan hasilnya digunakan untuk melakukan proses lainnya
     Dapat menggunakan Struktur Kontrol :LOOP, FOR, WHILE
     Dapat menangani Error
     Error bisa dihasilkan/dibangkitkan oleh Oracle
     Server atau bisa dibangkitkan sendiri dengan sengaja
     Untuk mengantisipasi berbagai hal yang barangkali sulit untuk ditangani secara langsung menggunakan kontrol program