Anda di halaman 1dari 16

Pertemuan 8

ORACLE PL/SQL
(Procedure Language/Structure Query Language)

Objektif:

1. Mahasiswa dapat mengetahui pengertian, arsitektur dan kelebihan dari PL/SQL


2. Mahasiswa dapat mengetahui struktur blok PL/SQL
3. Mahasiswa dapat menyebutkan tipe data yang biasa digunakan dan
mendeklarasikan variable dalam PL/SQL
4. Mahasiswa dapat menyebutkan karakter set dan leksikal unit yang ada didalam PL/SQL
5. Mahasiswa dapat membuat program sederhana dengan PL/SQL
6. Mahasiswa dapat menjalankan perintah SQL didalam PL/SQL
Pengenalan PL/SQL
Definisi PL/SQL

PL/SQL (Procedural Language/Structure Query Language) merupakan sebuah bahasa


procedural yang dikembangkan oleh Oracle Corporation untuk mengakses relational
database karena terintegrasi dengan SQL.

Arsitektur PL/SQL

Three-Tier Architecture

PL/SQL memiliki arsitektur three-tier client-server dengan tiga lapisan yang masing-
masing berjalan pada platform yang berbeda.

Page 2
1. Lapisan antarmuka pengguna, yang berjalan pada komputer pengguna akhir atau
client.
2. Logika bisnis dan lapisan pengolahan data yang berjalan pada server dan sering
disebut dengan server aplikasi.
3. Sebuah DBMS yang menyimpan data yang dibutuhkan oleh tingkat menengah.
Tingkat ini dapat berjalan pada server yang berbeda dari server aplikasi, yaitu
database server.
Client hanya akan bertanggung jawab untuk penggunaan aplikasi antarmuka dan
mungkin melakukan beberapa pengolahan logika sederhana sehingga client memiliki
tugas yang lebih mudah. Inti logika bisnis dari aplikasi berada pada lapisan tersendiri
yang secara fisik terhubung ke client dan database server melalui jaringan. Dan
aplikasi server dirancang untuk melayani beberapa client.

Eksekusi Blok PL/SQL

Pada gambar di atas, blok PL/SQL yang tanpa nama sedang dieksekusi. Perintah-
perintah procedural PL/SQL dieksekusi secara langsung, sedangkan perintah-perintah
SQL akan dieksekusi didalam Oracle Server. Sehingga PL/SQL berada di dua
lingkungan, yaitu:

- Oracle Database Server, bagian yang mengeksekusi perintah-perintah SQL yang


terdapat didalam PL/SQL.

Page 3
- Oracle Tools, bagian yang dapat langsung mengeksekusi perintah-perintah
prosedural PL/SQL.

Kelebihan PL/SQL

- PL/SQL dapat didesain khusus untuk database Oracle dalam menggunakan


program aplikasi.
- Dapat mengelola aturan bisnis melalui aplikasi middle layer
- Mendukung dan terintegrasi dengan SQL
- Mendukung Object-Oriented Programming
- Produktifitas lebih tinggi dengan menambahkan fungsionalitas untuk tool-tool
non-prosedural seperti Oracle Forms dan Oracle Reports
- Portabilitas penuh
- Keamanan yang baik

Perbedaan PL/SQL dengan SQL

SQL PL/SQL
- Bahasa deklaratif untuk database - Ekstensi dari SQL dengan
yang distandarkan secara menambahkan fungsi procedural.
internasional (ANSI). - Dengan PL/SQL akan diketahui
- Dengan SQL hanya diketahui juga bagaimana proses untuk
tentang bagaimana mendapatkan mendapatkan hasil.
hasil. - Statement/syntax yang digunakan
- Statement/syntax yang digunakan tergantung dari jenis bahasa yang
sama pada DBMS manapun. di adopsi.

Penulisan blok program PL/SQL berbeda dengan penulisan SQL. Blok program
PL/SQL ditulis menggunakan notepad dengan mengetikkan perintah ED namafile
atau EDIT namafile pada SQL*Plus. Dan untuk menjalankan blok tersebut, dapat
menggunakan perintah @namafile atau START namafile.

Blok PL/SQL
Struktur Blok PL/SQL

Page 4
Struktur blok PL/SQL terdiri dari 3 bagian, yaitu :

1. Declarative
Merupakan bagian yang digunakan untuk mendeklarasikan suatu Variable,
Constanta, Cursor dan User-Defined Exception.

2. Executable
Merupakan bagian yang digunakan untuk mengeksekusi
program dengan menuliskan statement program di antara
Begin dan End.

3. Exception-handling
Merupakan bagian yang digunakan untuk
menspesifikasikan apa yang harus dilakukan apabila terjadi
error dan kondisi abnormal dalam excetubale section.
Untuk setiap penulisan menggunakan PL/SQL dalam
SQL*Plus selalu diakhiri dengan menggunakan tanda garis miring (/).

Bentuk Umum Struktur Blok PL/SQL

DECLARE
Variable tipe_data
konstanta CONSTANT tipe_data := nilai;
...
BEGIN
statement_1;
statement_2;
...
EXCEPTION
WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
...
END;

Contoh Program

SET SERVEROUTPUT ON

Page 5
DECLARE

A NUMBER(3);

BEGIN

A := 5;

DBMS_OUTPUT.PUT_LINE(‘A = ‘||A);

END;

Tipe Data Dalam PL/SQL


Scalar

Tipe data scalar merupakan tipe data yang menyimpan nilai tunggal dan tidak
memiliki komponen internal. Tipe data scalar ini dapat diklasifikasikan ke dalam 4
kategori, yaitu Numeric, Character, Date dan Boolean.

Beberapa Contoh Tipe Data Scalar

Tipe data Keterangan Contoh Penggunaan


VARCHAR2 Tipe data untuk karakter V_ename VARCHAR2(25);
(Variable-Length Character
String)
CHAR Tipe data untuk karakter (Fixed- V_address CHAR(50);
Length Character String)
DATE Tipe data untuk tanggal V_today DATE;
INTERVAL Tipe data untuk Interval waktu D_time INTERVAL YEAR
TO MONTH;
BOOLEAN Memberikan hasil berupa benar Order_flag BOOLEAN;
atau salah
NUMBER Floating-Point, Fixed-Point, V_uts NUMBER(5,2)
Integer Number
REAL Floating-Point, Fixed-Point V_total REAL;

Composite

Page 6
Tipe data composite merupakan tipe data yang menyimpan nilai dari beberapa
elemen yang termasuk dalam variable tersebut. Contoh dari tipe data composite
adalah Record dan Array.

Reference

Tipe data ini merupakan tipe data yang digunakan untuk menyimpan nilai pointer
yang menunjuk ke suatu lokasi penyimpanan. Biasanya digunakan untuk mengambil
input dari user pada saat run time.

Contoh dari tipe data ini adalah:

- %TYPE : tipe data yang digunakan untuk menandakan bahwa Variable


yang dideklarasikan sama dengan tipe data dari kolom tabel tertentu.
- %ROWTYPE : tipe data yang digunakan bawah sekelompok Variable adalah
sama dengan tipe data dari baris suatu tabel terntentu.
LOB

LOB (Large Object) merupakan tipe data yang digunakan untuk menyimpan data
lebih besar berupa teks, grafik, gambar, video dan audio.

Contoh dari tipe data ini adalah:

- CLOB (Character Large Object) merupakan tipe data yang digunakan untuk
menyimpan objek berupa data teks yang besar didalam database.
- BLOB (Binary Large Object) merupakan tipe data yang digunakan untuk
menyimpan objek binary yang besar di dalam database.
- BFILE (Binary File) merupakan tipe data yang digunakan untuk menyimpan
objek binary yang besar dalam file sistem operasi di luar database.
- NCLOB (National Language Character Large Object) merupakan tipe data yang
digunakan untuk menyimpan data berupa objek apapun yang paling besar.

Data Type Conversion Function

Terdapat 3 fungsi untuk mengkonversikan suatu tipe data didalam database menjadi
berupa karakter, waktu ataupun angka.

Data Type Keterangan Contoh Penggunaan

Page 7
Conversion Function

TO_CHAR (Value, Mengkonversikan suatu TO_CHAR(2.98,


Format) angka atau tanggal ‘$999.99’);
menjadi suatu string TO_CHAR(SYSDATE,
dengan format tertentu ‘MM/DD/YYYY’);
TO_DATE (Value, Mengkonversikan suatu TO_DATE(‘20/07/1992’,
Format) string menjadi tanggal DD/MM/YYYY’);
dengan format tertentu
TO_NUMBER (Value, Mengkonversikan suatu TO_NUMBER (‘23’);
Format) string menjadi angka

Non PL/SQL Variable

Bind variable merupakan non pl/sql variable yang menerima inputan dari luar blok
pl/sql. Variable ini memiliki symbol titik dua ( : ) di setiap awal nama variabelnya.

Berikut contoh program yang menggunakan bind variable:

VARIABLE g_mounthly_sal NUMBER

ACCEPT p_annual_salary PROMPT ‘Please Enter The Annual Salary :’

DECLARE

V_sal NUMBER(9,2) := &p_annual_sal;

BEGIN

:g_mounthly_sal := V_sal/12;

END;

PRINT g_mounthly_sal

Deklarasi Variable Dalam PL/SQL


Variable adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di
memori komputer. Sebuah Variable dapat menerima nilai baru atau sebaliknya, yaitu
diubah pada saat program di eksekusi.

Page 8
Bentuk umum untuk penulisan sebuah Variable:

Keterangan :

- Variable_name merupakan nama Variable.


- Constant bersifat optional dan nilai yang disimpan bersifat tetap.
- Datatype merupakan jenis tipe data yang digunakan untuk sebuah Variable.
- Not Null bersifat optional dan memiliki arti bahwa Variable tersebut tidak boleh
bernilai Null ataupun kosong.
- Default bersifat optional dan memiliki fungsi sama dengan Constant.
- Expr merupakan nilai tetap yang diberikan pada suatu Variable
- Dan setiap pendeklarasian suatu Variable harus di akhiri dengan titik koma (;)
dan pernyataannya terpisah meskipun memiliki tipe data yang sama.
Selain mendeklarasikan suatu Variable, kita juga dapat memberikan nilai ke dalam
suatu Variable dengan beberapa cara, yaitu:

1. Menggunakan assignment operator (:=)


Contoh: V_ename Varchar2(10) := ‘Fazri’;
2. Menggunakan DEFAULT
Contoh: V_empno Number(6) DEFAULT 1789;
3. Menggunakan jenis constraint NOT NULL
Contoh: V_deptno Number(2) NOT NULL := 10;
Kemudian untuk memberikan nama pada suatu variable terdapat aturan penamaan,
yaitu:

- Dua variable dapat memiliki nama yang sama, asalkan berada dalam blok yang
berbeda
- Nama variable tidak boleh sama dengan nama kolom pada suatu tabel.

Menampilkan Output Blok PL/SQL


Selain menggunakan bind variable untuk menampilkan output dari suatu blok
PL/SQL, dapat juga menggunakan sebuah prosedur yang disediakan oleh Oracle
Packaged sebagai alternative yaitu DBMS_OUTPUT.PUT_LINE. Dan untuk

Page 9
mengaktifkan DBMS_OUTPUT.PUT_LINE, ketikkan statement SET
SERVEROUTPUT ON setalah login.

Berikut contoh penggunaan DBMS_OUTPUT.PUT_LINE:

SET SERVEROUTPUT ON

ACCEPT p_annual_salary PROMPT ‘Please Enter The Annual Salary :’

DECLARE

V_sal NUMBER(9,2) := &p_annual_sal;

BEGIN

V_sal := V_sal/12;

DBMS_OUTPUT.PUT_LINE (‘The Mounthly Salary is ’ || V_sal);

END;

Karakter Set Dan Lexical Unit


Delimiters

Delimiter merupakan symbol tunggal atau majemuk yang memiliki arti khusus untuk
PL/SQL.

Tabel Contoh Simbol Tunggal dan Simbol Majemuk

Simbol Tunggal Simbol Majemuk


Simbol Arti Simbol Arti
+ Operator penjumlahan := Operator sama dengan
/ Operator pembagian || Operator penggabungan
(concatenation)
: Penunjuk host Variable /* Penunjuk komentar bagian
awal untuk multi-line
- Operator pengurangan */ Penunjuk komentar bagian
akhir untuk multi-line
* Operator perkalian <> Operator relational untuk

Page 10
tidak samadengan
= Operator persamaan <= Operator reational untuk
lebih kecil dari atau
samadengan
< Operator relational untuk >= Operator relational untuk
kurang dari lebih besar dari atau
samadengan
> Operator relational untuk -- Penunjuk komentar
lebih dari (single-line)

Identifiers

Identifier digunakan untuk memberi nama bagian PL/SQL, meliputi konstanta,


vaiabel, exception, cursor, cursor Variable, subprogram dan packages.

Aturan penamaan identifier:

- Maksimal 30 karakter.
- Harus diawali dengan huruf.
- Tidak boleh ada spasi, tanda slash (/), ampersand (&).
- Tidak boleh memiliki nama yang sama dengan nama kolom dalam suatu
database.
- Bukan merupakan reserved word (keyword), jika merupakan reserved word
harus disertai dengan double quotion mark ( “ ” ).

Literals

Literal dapat berupa angka, karakter, tanggal, string, atau Boolean yang tidak dapat
diwakilkan dengan identifier.

Aturan dalam penggunaan literal:

- Karakter, string dan tanggal harus di apit menggunakan single quotation marks (
‘ ’ ).
- Untuk angka, dapat berupa nilai tunggal ataupun notasi ilmiah.
- Blok PL/SQL diakhiri dengan slash (/).

Comments

Page 11
Comment atau komentar dapat digunakan untuk memudahkan proses maintenance
programmer dalam menuliskan baris program.

Jenis komentar yang dapat digunakan:

/* … */ : untuk menuliskan beberapa baris komentar

-- … : untuk menuliskan satu barus komentar

Contoh penggunaan:

/* ini adalah komentar yang dibuat

dengan menggunakan Oracle */

-- ini juga merupkan komentar Oracle

Penggunaan Sql Dalam PL/SQL


Menampilkan Data

Syntax untuk menampilkan data dengan menggunakan PL/SQL:

Klausa INTO digunakan untuk menspesifikasikan nama Variable yang akan


menyimpan nilai yang dihasilkan oleh perintah SQL dari klausa SELECT. Klausa
tersebut bersifat optional sehingga dapat digunakan ataupun tidak tergantung pada
jenis kebutuhan dalam menampilkan data.

Memasukkan Data

Syntax untuk memasukkan data dengan menggunakan PL/SQL:

Page 12
Mengubah Data

Syntax untuk mengubah data dengan menggunakan PL/SQL:

Menghapus Data

Syntax untuk menghapus data dengan menggunakan PL/SQL:

Struktur Kondisi
Terdapat dua struktur kondisi didalam PL/SQL, yaitu :

1. Struktur kondisi menggunakan IF


Untuk struktur kondisi menggunakan IF, terbagi menjadi tiga sesuai dengan
banyaknya kondisi yang akan digunakan.
- IF – THEN – END IF
Contoh:
IF nilai > 80 THEN grade := ‘A’;
END IF;

- IF – THEN – ELSE – END IF


Contoh:
IF nilai > 80 THEN grade := ‘A’;

Page 13
ELSE grade := ‘B’;
END IF;

- IF – THEN – ELSIF – END IF


Contoh:
IF nilai > 80 THEN grade := ‘A’;
ELSIF nilai > 60 THEN grade := ‘B’;
ELSE grade := ‘C’;
END IF;

2. Struktur kondisi menggunakan CASE


Contoh :
CASE grade
WHEN ‘A’ THEN DBMS_OUTPUT.PUT_LINE (‘Excellent’);
WHEN ‘B’ THEN DBMS_OUTPUT.PUT_LINE (‘Good’);
WHEN ‘C’ THEN DBMS_OUTPUT.PUT_LINE (‘Poor’);
END CASE;

Struktur Kontrol

Dalam PL/SQL terdapat tiga struktur kontrol, yaitu basic loop, while loop dan for
loop.

1. Basic Loop
Basic loop merupakan struktur kontrol paling sederhana dalam PL/SQL.
Sintaks:
LOOP
Statement;
END LOOP;

2. While Loop
Merupakan struktur kontrol yang akan mengeksekusi suatu pernyataan hingga
kondisi yang diinginkan bernilai benar.
Sintaks:
WHILE condition LOOP Statement;

Page 14
END LOOP;

3. For Loop
Merupakan struktur kontrol yang akan mengeksekusi suatu pernyataan dengan
referensi counter.
Sintaks:
FOR counter IN lower_bound .. upper_bound
LOOP statement;
END LOOP;

DAFTAR PUSTAKA

Page 15
Asep Kosasih.Pendekatan Praktis Belajar Algoritma Pemrograman Dengan Bahasa
Delphi 5.0.CV.YRAMA WIDYA.2006

Craig Utley, 2001, A Programmer's Introduction to Visual Basic .NET

Hendrayudi.Pemrograman Delphi 8.0.CV.YRAMA WIDYA.2008

Julia Lerman, 2010, Programming Entity Framework 2nd Edition, O'Reilly.

Matthew MacDonald, 2006, THE BOOK OF™ VISUAL BASIC 2005, No Starch
Press, Inc

Neena Kochar, Ellen Gravina, Priya Nathan, Introduction to Oracle: SQL and
PL/SQL.

Oracle Database PL/SQL User’s Guide and Reference 10g Release 2(10.2),
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261.pdf

Teddy Marcus Zakaria.Pemrograman Delphi untuk Pemula: IDE dan Struktur


Pemrograman.IlmuKomputer.com.2003

Thuan L. Thai dan Hoang Lam, 2002, .NET Framework Essentials 2nd Edition,
O'Reilly.

Tim Patrick, 2008, Programming Visual Basic 2008, O'Reilly.

Todd Herman, Allen Jones, Matthew MacDonald, and Rakesh Rajan, 2008, Visual
Basic 2008 Recipes, Apress.

Page 16

Anda mungkin juga menyukai