Oracle Dan PL SQL
Oracle Dan PL SQL
OR
Resnanda Pramudiastiro
( 15111990 )
( 16111129 )
Sandy Achmadi
( 16111585 )
2013
LABORATORIUM
SISTEM INFORMASI
UNIVERSITAS GUNADARMA
1|O r a c l e & P L / S Q L
ORACLE
1.
2.
3.
4.
5.
2|O r a c l e & P L / S Q L
2.
Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah
kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga
dapat diperiksa menggunakan suatu program komputer untuk memperoleh
informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk
mengelola dan memanggil kueri (query) basis data disebut sistem manajemen
basis data (database management system, DBMS). Sistem basis data dipelajari
dalam ilmu informasi.
Istilah "basis data" berawal dari ilmu komputer. Meskipun kemudian artinya
semakin luas, memasukkan hal-hal di luar bidang elektronika, artikel ini mengenai
basis data komputer. Catatan yang mirip dengan basis data sebenarnya sudah ada
sebelum revolusi industri yaitu dalam bentuk buku besar, kuitansi dan kumpulan
data yang berhubungan dengan bisnis.
Konsep dasar dari basis data adalah kumpulan dari catatan-catatan, atau potongan
dari pengetahuan. Sebuah basis data memiliki penjelasan terstruktur dari jenis
fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema
menggambarkan obyek yang diwakili suatu basis data, dan hubungan di antara
obyek tersebut. Ada banyak cara untuk mengorganisasi skema, atau memodelkan
struktur basis data: ini dikenal sebagai model basis data atau model data. Model
yang umum digunakan sekarang adalah model relasional, yang menurut istilah
layman mewakili semua informasi dalam bentuk tabel-tabel yang saling
berhubungan dimana setiap tabel terdiri dari baris dan kolom (definisi yang
sebenarnya menggunakan terminologi matematika). Dalam model ini, hubungan
antar tabel diwakili denga menggunakan nilai yang sama antar tabel. Model yang
lain seperti model hierarkis dan model jaringan menggunakan cara yang lebih
eksplisit untuk mewakili hubungan antar tabel.
Istilah basis data mengacu pada koleksi dari data-data yang saling berhubungan,
dan perangkat lunaknya seharusnya mengacu sebagai sistem manajemen basis
data (database management system/DBMS). Jika konteksnya sudah jelas, banyak
3|O r a c l e & P L / S Q L
administrator dan programer menggunakan istilah basis data untuk kedua arti
tersebut.
Perangkat lunak basis data yang banyak digunakan dalam pemrograman dan
merupakan perangkat basis data aras tinggi (high level):
* DB2
* Microsoft SQL Server
* Oracle
* Sybase
* Interbase
* XBase
* Firebird
* MySQL
* PostgreSQL
* Microsoft Access
* dBase III
* Paradox
* FoxPro
* Visual FoxPro
* Arago
* Force
* Recital
* dbFast
* dbXL
* Quicksilver
* Clipper
* FlagShip
* Harbour
* Visual dBase
* Lotus Smart Suite Approach
Selain perangkat lunak di atas, terdapat juga perangkat lunak pemrograman basis
data aras rendah (low level), diantaranya:
4|O r a c l e & P L / S Q L
* Btrieve
* Tsunami Record Manager
Berikut ini adalah daftar jenis-jenis teknologi database, yang sebagian besar
merupakan Relational Database Management System (RDBMS):
aplikasi pengolah database yang bersifat open source, dikembangkan oleh Apache
Software Foundation. Lazim digunakan di program Java dan untuk pemrosesan
transaksi online.
secara proprietary (komersial). DB2 terbagi menjadi 3 varian, yaitu DB2 untuk
Linux - Unix - Windows, DB2 untuk z/OS (mainframe), dan DB2 untuk iSeries
(OS/400).
5|O r a c l e & P L / S Q L
dikembangkan oleh 10gen. Tersedia untuk berbagai platform sistem operasi dan
dikenal telah digunakan oleh situs Foursquare, MTV Networks, dan Craigslist.
6|O r a c l e & P L / S Q L
Cobol
01 PEG_REC.
02
PEG_NO
PIC X(6).
02
DEPT_NO
PIC X(4).
02
GAJI
PIC 9(6).
CHARACTER
NOMOR_DEPT
CHARACTER
GAJI
NUMERIC
LENGTH = 22
PREFIX
EMP#
INDEX = EMPX
DEPT#
PAY
7|O r a c l e & P L / S Q L
Data Independence
Kapasitas untuk merubah skema pada satu level sistem basis data tanpa harus
merubah skema pada level lainnya.
1. Physical Data Independence
Perubahan pada skema internal dimana tidak mempengaruhi kema konseptual
dan eksternal.
2. Logical Data Independence
Perubahan pada skema konseptual dimana tidak mempengaruhi skema
eksternal dan aplikasi program.
Mapping (Transformasi)
Proses pendefinisian informasi dari satu level ke level lainnya.
Conceptual/Internal Mapping
Pendefinisian hubungan antara view konseptual dengan basis data di level internal
(Bagaimana record-record/field-field didalam level konseptual didefinisikan
dilevel internal).
External/Conceptual Mapping
Pendefinisian hubungan antara view konseptual dengan view eksternal
DBMS (Database Management Systems)
DBMS adalah perangkat lunak yang menangani semua pengaksesan database.
Mempunyai fasilitas membuat, mangakses, memanipulasi dan memelihara basis
data.
Bahasa Dalam DBMS
1. Data Definition Language (DDL)
2. Data Manipulation Language (DML)
Procedural DML
Non Procedural
8|O r a c l e & P L / S Q L
Fungsi DBMS
1. Data Definition
DBMS harus dapat mengolah pendefinisian data
2. Data Manipulation
DBMS harus dapat menangani permintaan-permintaan dari pemakai untuk
mengakses data
3. Data Security & Integrity
DBMS harus dapat memeriksa security dan integrity data yang didefinisikan
oleh DBA
4. Data Recovery & Concurency
-
5. Data Dictionary
DBMS harus menyediakan data dictionary
6. Performance
DBMS harus menangani unjuk kerja dari semua fungsi seefisien mungkin.
9|O r a c l e & P L / S Q L
Komponen DBMS
Programmers
Users
DBA
Queries
Database
Schema
DBMS
DML
Preprocessor
Query
Processor
DDL
Compiler
Program
Object Code
Database
Manager
Dictionary
Manager
Access
Method
File
Manager
Application
Programs
System
Buffer
Database
dan
Data Dictionary
1.
Query Processsor
2.
Database Manager
3.
File Manager
4.
DML Preprocessor
5.
DDL Compiler
6.
Dictionary Manager
10 | O r a c l e & P L / S Q L
Teleprocessing
Arsitektur tradisional untuk sistem multi user adalah teleprocessing, dimana satu
komputer dengan sebuah CPU dan sejumlah terminal seperti pada gambar di
bawah ini.
IBM Compatible
11 | O r a c l e & P L / S Q L
File-Server
Proses didistribusikan ke dalam jaringan, sejenis LAN (Local Area Network).
File server mengendalikan file yang diperlukan oleh aplikasi dan DBMS.
Meskipun aplikasi dan DBMS dijalankan pada masing-masing workstation, tetapi
tetap meminta file dari file server jika diperlukan (perhatikan gambar di bawah
ini).
Workstation2
Workstation1
Workstation3
LAN
files returned
Database
file server
12 | O r a c l e & P L / S Q L
Client Server
Client-server menunjukkan cara komponen software berinteraksi dalam bentuk
sistem.
Client 2
Client 3
client 1
LAN
Database
Data Dictionary
Data dictionary adalah tempat penyimpanan informasi yang menggambarkan data
dalam database. Data dictionary biasa disebut juga dengan metadata atau data
mengenai data.
Berisi tentang :
-
13 | O r a c l e & P L / S Q L
Model Data
Sekumpulan konsep-konsep untuk menerangkan data, hubungan-hubungan antara
data dan batasan-batasan data yang terintegrasi di dalam suatu organisasi.
1. Model Data Berbasis Objek
Model data berbasis objek menggunakan konsep entitas, atribut dan hubungan
antar entitas.
2. Model Data Berbasis Record
Pada model data berbasis record, database terdiri dari sejumlah record dalam
bentuk yang tetap yang dapat dibedakan dari bentuknya. Ada 3 macam jenis
model data berbasis record, yaitu :
-
3. Database Oracle
Database Oracle adalah Database relasional yang terdiri dari kumpulan data
dalam suatu sistem manajemen Database RDBMS. Perusahaan Software Oracle
memasarkan jenis Database ini untuk bermacam-macam aplikasi yang bisa
berjalan pada banyak jenis dan merk perangkat keras komputer (platform).
14 | O r a c l e & P L / S Q L
Database Oracle ini pertama kali dikembangkan oleh Larry Ellison, Bob Miner
dan Ed Oates lewat perusahaan konsultasinya bernama Software Development
Laboratories (SDL) pada tahun 1977. Pada tahun 1983, perusahaan ini berubah
nama menjadi Oracle Corporation sampai sekarang. (wikipedia indonesia)
Database Oracle terdiri dari beberapa komponen berikut ini :
Software Oracle
Database, yang tersimpan dalam bentuk file pada satu disk atau lebih.
Instance Oracle, terdiri dari background process dan shared memory area
Server process, yang meng-handle user dan aplikasi yang telah terhubung
dengan Database, dan juga mengatur memori dan temporary storage yang
digunakan process tersebut.
Oracle
Net,
yang
memungkinkan
komunikasi
antara client
15 | O r a c l e & P L / S Q L
3. ORACLE Corporation: sebagai Perusahaan Raksasa di bidang IT. Hal ini yang
mungkin belum disadari banyak orang (kecuali pengamat/pelaku IT). Perusahaan
yang didirikan tahun 1982 sebagai ORACLE Corporation, merupakan
pengembangan dari perusahaan Relational Software Inc (RSI) yang sudah merilis
Oracle Versi 2. Di tahun 2009 ini, Oracle Corporation sudah dapat disandingkan
dengan Raksasa Software Microsoft. Bahkan, bila saja pembelian Sun
Microsystem disetujui, Oracle sudah menjadi perusahaan yang memiliki
16 | O r a c l e & P L / S Q L
SUN
Microsystem)
memiliki
Hardware.
Kekurangan :
Merupakan software DMBS yang paling mahal, paling rumit, dan paling
sulit untuk dipelajari.
Harga yang sangat mahal untuk sebuah database dan penggunaan Oracle
sangat memakan banyak biaya, mulai dari device sampai diperlukannya
DBA yang handal.
Kelebihan :
Dapat mengolah data dalam ukuran besar dan mengolahnya dengan cepat
sehingga
didapatkan
informasi
yang
akurat
sesuai
permintaan
pengguna/user.
Memiliki kemampuan untuk management user dan tiap user bisa diatur
hak akses terhadap suatu database oleh database administrator.
17 | O r a c l e & P L / S Q L
Ketika kita mengakses database dan kemudian ada kejadian seperti listrik
mati misalnya maka data yang sudah kita simpan tidak rusak/hilang.
Oracle memiliki kemampuan flashback, sehingga semua jenis transaksi
yang salah akan dapat dikembalikan. Dan dapat menampung data dalam
sekala besar.dalam PvE maupun PvP, Oracle dapat meningkatkan kerja
tim dengan berbagai buff, menghidupkan kembali orang yang mati,
sehingga dicari cari untuk party, selain itu juga terlihat pada besarnya MP
yang dimilikinya. Dapat bekerja di lingkungan client/server (pemrosesan
tersebar).
18 | O r a c l e & P L / S Q L
Kemudian akan muncul program instalasi. Perlu kamu ketahui, program instalasi
yang disebut Oracle Universal Installer ini didevelop pake bahasa Java. Klik
tombol Install/Deinstall Product.
19 | O r a c l e & P L / S Q L
Pada form diatas kita diminta menentukan lokasi penyimpanan file hasil instalasi,
ubah jika perlu. Biarkan setting lain dalam keadaan default. Jangan lupa isi
databse password, dan jangan lupa pula untuk diinget ya, ntar gak bisa login lho..
Klik
next,
akan
muncul
window
konfirmasi
seperti
ini:
Gambar 4. Summary
Klik install untuk memulai instalasi. Biarkan Oracle menginstall, prosesnya cukup
lama lebih dari setengah jam.
20 | O r a c l e & P L / S Q L
Gambar 7. Summary
21 | O r a c l e & P L / S Q L
Copy teks yang ditampilkan pada window instalasi terakhir. Informasi itu akan
berguna untuk manajemen database.
Informasinya akan seperti ini:
The following J2EE Applications have been deployed and are accessible at the
URLs listed below.Your database configuration files have been installed in
F:\oracle\product\10.1.0 while other components selected for installation have
been installed in F:\oracle\product\10.1.0\Db_1. Be cautious not to accidentally
delete these configuration files.
Ultra Search URL:
http://DANCPM:5620/ultrasearch
Ultra Search Administration Tool URL: http://DANCPM:5620/ultrasearch/admini
SQL*Plus URL:
http://DANCPM:5560/isqlplus
Enteprise Manager 10g Database Control URL:
http://DANCPM:5500/em
22 | O r a c l e & P L / S Q L
Setelah selesai, browser kamu akan membuka Enteprise Manager 10g Database
Control, close saja karena itu tidak banyak digunakan kalo kamu buka seorang
DBA(DatabaseAdministrat).
Untuk memulai ngoprek oracle buka :Start Menu -> Programs -> Oracle
OraDb10g_home1
->
Application
Development
->
SQL
Plus
23 | O r a c l e & P L / S Q L
Kamu akan diminta data login. Masukkan username=system dan password sesuai
instalasi. Biarkan Host String kosong. Host String perlu diisi jika kamu mau
mengakses database yang ada diserver atau dalam komputer kamu ada lebih dari
satu database. Karena kita hanya punya satu database yaitu orcl maka Host String
kosongkan.
Akhirnya kita sudah bisa masuk dan pake oracle. Tapi sebelum kita ngoprek lebi
lanjut dan buat tabel alangkah baiknya kita buat user baru agar user system tidak
berisi database dari kita, karena user system sudah banyak berisi tabel bawaan
oracle, so agar kita tidak pusing dengan banyaknya table di user system (kalo gak
percaya jalankan perintah : select * from tab; ) kita buat user baru bernama cpm
kalo mau pake nama lain terserah kamu deh
jalankan syntak ini:
create user cpm identified by dancpm;
grant connect,resource to cpm;
Untuk baris pertama:
Maksud create user cpm adalah system membuat user baru bernama cpm.
Arti identified by dancpm adalah password dari cpm adalah dancpm
Untuk baris kedua:
Perintah grant digunakan untuk memberikan hak akses terhadap oracle kepada
cpm berupa:
Connect merupakan role yang terdiri dari privilege:
create session.
Resource merupakan role yang terdiri dari privilege :
1. CREATE CLUSTER
2. CREATE INDEXTYPE
24 | O r a c l e & P L / S Q L
3. CREATE OPERATOR
4. CREATE PROCEDURE
5. CREATE SEQUENCE
6. CREATE TABLE
7. CREATE TRIGGER
8. CREATE TYPE
So dengan previlege-previlege diatas kita bisa membuat tabel dan objek database
lain pada user cpm.
Kita harus disconnect dari user system agar bisa masuk ke user cpm yang tadi kita
buat. Ada 2 cara :
1. cara cepat
jalankan perintah berikut
disc
conn
lalu masukkan username=cpm dan password=dancpm (atau sesuai settingan
kamu) saat diminta.
2. cara lama
close SQL Plus
buka :Start Menu -> Programs -> Oracle OraDb10g_home1 -> Application
Development -> SQL Plus
masukkan username=cpm dan password=dancpm (atau sesuai user baru yang
kamu buat tadi)
Sekarang kita sudah bisa mulai pake oracle untuk membuat database.
25 | O r a c l e & P L / S Q L
Pastikan setiap kali pakai oracle kamu login dengan user baru yang sudah dibuat
tadi.
5. Membuat Database di oracle 10g
cara membuat database di Oracle 10g release 2. Saya harap anda sudah
menginstallnya kalo belum anda bisa melihat tutorialnya diartikel sebelumnya.
Baiklah langsung saja.
26 | O r a c l e & P L / S Q L
2. Database Template merupakan pilihan template yang ingin kita gunakan ada 4
pilihan template yaitu :
1.
Custom Database
2.
Data Warehouse
3.
General Purpose
4.
Transaction Processing
Setiap pilihan template memiliki komponen yang berbeda dan itu bisa dilihat
di Show Details. Akan tetapi karena kita akan membuat database dengan tujuan
umum maka kita pilih General Purpose Template.
Database templates
27 | O r a c l e & P L / S Q L
Database Identification
28 | O r a c l e & P L / S Q L
Management Options
Setelah itu ada pilihan Enable Email Notification yang berarti setiap ada
perubahan kita akan mendapat informasi lewat email dan Enable Daily
Backup yang berarti kita mengkatifkan backup otomatis. Kalo merasa butuh
silahkan dicentang kalo tidak ya biarkan saja.
29 | O r a c l e & P L / S Q L
Dalam opsi ini saya sarankan untuk pilih Use the Same Password for All
Accounts.
Database Credentials
Lalu Next
30 | O r a c l e & P L / S Q L
Storage Options
Setelah itu
7. Database File Locations merupakan tempat file database yang akan disimpan
pilih default
(Use Database File Locations from Templates)
31 | O r a c l e & P L / S Q L
32 | O r a c l e & P L / S Q L
33 | O r a c l e & P L / S Q L
Database Caption
34 | O r a c l e & P L / S Q L
Initialization Parameters
11. Database Storage disini kita bisa melihat informasi database yang akan
digunakan.
35 | O r a c l e & P L / S Q L
Database Storage
Lalu Finish.
36 | O r a c l e & P L / S Q L
Creation Options
37 | O r a c l e & P L / S Q L
General Purpose
38 | O r a c l e & P L / S Q L
Password Management
Setelah database sudah dibuat lalu akan muncul Password Managent yang
menjelaskan tentang hak akses yang diizinkan. mana berfungsi untuk mengatur
hak akses. Jika kalian mau langsung Bereksperimen bisa dibuka salah satu
account selain sys/system, misalnya scott lalu masukan new password lalu
confirmasi password lalu ok.
39 | O r a c l e & P L / S Q L
Password Management
Lalu Pilih Exit.
Untuk menuliskan kode - kode SQL anda bisa langsung bisa memulainya
menggunakan aplikasi sql plus yang berada dimenu start di folder Oracle >
Aplication Development > SQL Plus.
40 | O r a c l e & P L / S Q L
Sql Plus
Dan isi form user name ( diisi dengan nama account yang di unlock selain
sys/system/sysman) dan masukan password lalu Hostringnya dibiarkan kosong
saja lalu klik OK.
41 | O r a c l e & P L / S Q L
42 | O r a c l e & P L / S Q L
PL/SQL
Pengertian PL/SQL
Structured query language (SQL) merupakan bahasa untuk berkomunikasi
dengan database relasional yang bersifat deklaratif (bukan prosedural) dengan
menyatakn hasil (bukan cara memperoleh hasil ).
SQL (Structured Query Language) adalah sebuah bahasa yang
dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini
secara de facto merupakan bahasa standar yang digunakan dalam manajemen
basis data relasional. Saat ini hampir semua server basis data yang ada
mendukung bahasa ini untuk melakukan manajemen datanya. (dari wikipedia)
Sebagai contoh, statemen SQL dibawah ini akan menampilkan informasi
pelanggan dipontianak yang diurutkan secara ascending pada nama pelanggan(1).
Tabel pelanggan mungkin saja memiliki indeks pada kolom nama, atau
pada kolom kota, atau mungkin pula tidak terdapat indeks. Untuk kecepatan
akses, SQL melalui database engine akan menentuakn cara tercepat memproses
data, karena itu user tidak perlu menetukan bagaimana cara mengambil data.
Jadi SQL merupakan bahasa yang deklaratif tau fungsional karena user
hanya menjelaskan data yang diinginkan. Berbeda dengan bahasa procedural
pascal atau C yang akan melinbatkan proses seperti melakukan pengulangan
sampai akhir tabel atau kondisi kota terpenuhi, melakukan perbandingan kondisi
kota yang dicari maupun pengurutan nama.
43 | O r a c l e & P L / S Q L
44 | O r a c l e & P L / S Q L
A. Struktur PL/SQL
PL/SQL merupakan bahasa block-structured (berstruktur blok). Yaitu
bahwa unit-unit dasar (procedure, function, dan blok tanpa nama (anonymous
block)) yang membentuk program PL/SQL merupakan blok logikal, yang mana
dapat berisi beberapa sub-sub blok bersarang (nested-blocks). Dengan demikian,
PL/SQL mendukung pendekatan divide-and-conquer (membagi dan mengatasi)
untuk penyelesaian masalah yang disebut dengan stepwiserefinement.
Blok (atau sub-blok) mengijinkan kita untuk mengelompokkan secara
logikaldeklarasi-deklarasi dan perintah-perintah yang terkait. Blok PL/SQL
memiliki tiga bagian:bagian declarative, bagian executable, dan bagian exceptionhandling. (Dalam PL/SQL,peringatan dan kondisi error disebut dengan
exception). Bagian executable merupakan bagianyang mutlak harus ada pada
suatu blok PL/SQL
45 | O r a c l e & P L / S Q L
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 :
Dari Aplikasi
Aturan penulisan:
Dapat ditulis dalam beberapa baris (tidak harus dalam satu baris perintah)
Komentar diawali dengan tanda min dua kali(--) atau diapit dengan tanda
/**/
46 | O r a c l e & P L / S Q L
Contoh PL/SQL
Sub Program :
a. 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
b. Menggunakan struktur blok PL/SQL standart
c. Modular dapat dipergunakan berulang-ulang, ditingkatkan/dikembangkan dan
mudah dalam perawatan.
Semua program PL/SQL harus mengikuti struktur pemrograman sebagai berikut :
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 (Retrun) jika blok adalah fungsi.
Bagian Deklarasi (Declaration)
Bagian ini untuk membuat deklarasi mengenai semua variable dan konstanta yang
direferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini dimulai dengan
perinyah DECLARE. Jika tidak ada variable atau konstanta yang ingin
dideklarasikan, bagian ini boleh dihilangkan.
Bagian Eksekusi (Execution)
Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis. Bagian
eksekusi ini harus dimulai dengan perintah BEGIN.
47 | O r a c l e & P L / S Q L
DECLARE
variabel tipe_data;
konstanta CONSTANT tipe_data := nilai;
...
BEGIN
statement_1;
statement_2;
...
EXCEPTION
WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
...
END;
SQL>SET SERVEROUTPUT ON
SQL>DECLARE
X Integer;
BEGIN
X := Belajar Oracle;
DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE (Kesalahan pada pengisian nilai);
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
dahulu. Untuk menjalankan kode sampel ini, login ke SQL * Plus. PL / SQL blok
diakhiri dengan tanda garis miring / atau garis byitself.
Tipe Data
a. Tipe Data dasar :
Numerik
NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER,
INT,
NUMERIC.
Karakter
VARCHAR2, CHAR, LONG
DATE
BOOLEAN
ROWID
49 | O r a c l e & P L / S Q L
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 ];
50 | O r a c l e & P L / S Q L
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.
DECLARE
X integer;
Alamat varchar2(40);
No_induk char(8);
.....
BEGIN
X := 12;
Alamat := Gelatik Dalam 391, Bandung;
No_induk := DOG29549;
END;
DECLARE
salary number(4);
dept varchar2(10) NOT NULL := HR Dept;
Nilai variabel yang bisa berubah dalam pelaksanaan atau pengecualian bagian PL
/ SQL Block. Kita dapat menempatkan nilai ke variabel dalam dua cara yang
diberikan dibawah ini.
51 | O r a c l e & P L / S Q L
1. Kita dapat langsung memberikan nilai pada variabel. Sintaks Umum adalah:
variable_name:= value;
2. 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.
Komentar
Digunakan untuk memudahkan proses maintenance
Jenis komentar :
52 | O r a c l e & P L / S Q L
Contoh :
/* Ini adalah komentar Oracle */
-- Ini juga komentar Oracle
53 | O r a c l e & P L / S Q L
54 | O r a c l e & P L / S Q L
55 | O r a c l e & P L / S Q L
LOOP
ulang := ulang + 1;
Dbms_output.put(ulang #);
Dbms_output.put_line (to_char(ulang));
IF ulang > 100 THEN
RAISE stop;
NUMBER;
EXCEPTION;
END IF;
END LOOP;
EXCEPTION
WHEN stop THEN
Dbms_output.put_line(Ulangan selsesai);
END;
Program PL/SQL ini akan menghitung ulangan 100 kali dan kemudian diakhiri
dengan pesan Ulangan selesai.
B. Bagian Deklarasi
Pada bagian ini ditempatkan deklarasi semua variable dan konstanta (constant)
yang akan dipakai oleh pernyataan PL/SQL yang dibuat.
Perbedaan variable dengan konstanta adalah :
Konstanta (constant) nilai ditentukan pada saat deklarasi dibuat sehingga
nilainya tetap pada saat program dieksekusikan. Variabel dapat menerima nilai
baru
atau
nilainya
diubah
pada
saat
program
dieksekusikan.
Waktu
56 | O r a c l e & P L / S Q L
mendeklarasikan suatu variable atau konstanta, harus ditentukan tipe data yang
akan dipakai. Sehingga pada waktu mendeklarasikan variable atau konstanta, tipe
data SQL dapat dipakai. Di samping tipe data SQL, PL/SQL mendukung sejumlah
tipe datanya sendiri sebagai berikut :
BOOLEAN dipakai untuk menyatakan data logika, yaitu TRUE (benar), FALSE
(salah), dan NULL (kosong).
BINARY_INTEGER digunakan untuk mendeklarasikan bilangan yang tidak
mempunyai angka decimal. Tipe data NATURAL dan POSITIVE merupakan
subset dari BINARY_-INTEGER.
%TYPE tipe data ini jika dipakai menandakan bahwa veriabel yang
dideklarasikan sama dengan tipe data dari kolom table tertentu. Ini mempermudah
deklarasi variable untuk menghitung tipe data kolom-kolom table yang sudah
dibuat.
%ROWTYPE - tipe data ini menandakan bahwa sekelompok variable tertentu
adalah sama dengan tipe data dari row suatu table tertentu.
Table dan Record tipe data komposit (composite datatype) untuk pemakaian
yang lebihkompleks.
Contoh deklarasi konstanta :
DECLARE
Temperatur_asal
Nilai_mula
NUMBER := 0;
NUMBER (2) := 100;
57 | O r a c l e & P L / S Q L
DECLARE
Temperatur
Nama
Alamat
NUMBER (3.2);
VARCHAR2 (30);
%TYPE;
Pada saat deklarasi, panjang tipe data dapat ditentukan (bounded) atau tidak
(unbounded). Jika ditentukan, maka jumlah memori yang dialokasikan untuk tipe
data tersebut juga ditentukan sesuai dengan deklarasi.
Nama variable tidak boleh menggunakan kata kunci (key word) yang
digunakan oleh PL/SQL seperti : IF, ELSE, LOOP, WHILE, FOR, EXIT,
NULL, dan END.
Pilih nama variable yang ada hubungannya dengan program yang akan
dibuat. Tentukan aturan pemberian nama (naming convention) yang sehingga
mudah diingat.
Pergunakan konstanta untuk menggantikan bilangan tetap.Hapus variablevariabel yang tidak dipakai lagi.
58 | O r a c l e & P L / S Q L
Tabel PL/SQL
Tabel PL/SQL sebetulnya dapat diibaratkan semacam array satu dimensi
yang mempunyai satu kolom tunggal yang nilai-nilai datanya diakses dengan
menggunakan indeks. Indeks yang dapat dipakai hanya satu tipe yaitu
BINARY_INTEGER.
Perlu diperhatikan bahwa table PL/SQL tidak sama dengan table SQL
yang dapat memilki banyak kolom-kolom dan memiliki relational integrity.
Kegunaan table PL/SQL adalah untuk menampung data-data yang dihasilkan oleh
program PL/SQL.
Karena PL/SQL tidak menyediakan fasilitas input/output sendiri, maka
hasil yang didapat oleh PL/SQL tidak begitu saja diakses oleh seorang pemakai
atau program lain. Untuk itu Oracle menyediakan dua cara untuk mengakses datadata yang dihasilkan oleh PL/SQL, yaitu dengan menggunakan paket
DBMS_OUTPUT.
Syntax yang harus digunakan untuk mendeklarasikan table PL/SQL adalah :
TYPE nama_tipe IS TABLE O
nama_tabel .nama_kolom%TYPE
INDEX BY BINARY_INTEGER;
59 | O r a c l e & P L / S Q L
Record PL/SQL
Record PL/SQL adalah tipe data komposit lain yang dapat dideklarasikan
dengan syntax sebagai berikut :
TYPE nama_tipe IS RECORD
(nama_kolom tipe_data_kolom,
nama_kolom
tipe_data_kolom) ;
Contoh deklarasi suatu record :
SQL> DECLARE
TYPE
(no_pembeli record_no_pembeli IS RECORD
nama_pembeli pembeli .no_pembeli%TYPE,
alamat pembeli .nama%TYPE
gaji number (10) ) ;
Record ini menggunakan tiga kolom dari table pembeli yang sudah ada dan satu
kolom baru yang tidak ada didalam table pembeli.
C. Bagian Eksekusi
Pada bagian ini pernyataan PL/SQL akan kita buat yang menentukan tujuan
program PL/SQL dibuat. Pernyataan pada bagian ini dapat digolongkan atas :
Pernyataan Penentuan (Assignment)
Pernyataan penentuan umumnya ditandai dengan penggunaan operator samadengan (:=) seperti contoh :
60 | O r a c l e & P L / S Q L
nomer_awal := 1;
nomer_akhir := 100;
temp := tem + 1;
temp_c := (5/9)*(temp_f 32);
61 | O r a c l e & P L / S Q L
62 | O r a c l e & P L / S Q L
Pernyataan SQL
63 | O r a c l e & P L / S Q L
Pada contoh ini hanya ada tiga kolom-kolom dari table pembeli yang akan
dipanggil. Kursor dapat dibuka (open), dipindahkan (fetch), atau ditutup.
Contoh pernyataan untuk membuka kursor c_pembeli :
OPEN c_pembeli;
Contoh pernyataan untuk memindahkan kursor c_pembeli :
FETCH c_pembeli INTO catatan_pembeli;
Contoh pernyataan untuk menutup kursor c_pembeli :
CLOSE c_pembeli;
64 | O r a c l e & P L / S Q L
D. Bagian Exception
Bagian perkecualian ini perlu dibuat jika pernyataan PL/SQL mengembalikan
hasil jika kesalahan (error) pada saat program dieksekusikan. PL/SQL
menyediakan sejumlah exception siap pakai sebagai berikut :
DUP_VAL_ON_INDEX
INVALID_NUMBER
NO_DATA_FOUND
TOO_MANY_ROWS
VALUE_ERROR
Disamping itu exception dapat didefinisikan sendiri (pre-defined
exception) yang dapat dipanggil dengan perintah RAISE di dalam program
PL/SQL. Sedangkan pre-defined exception akan dipanggil secara otomatis jika
terjadi kesalahan tanpa menggunakan perintah RAISE.
Sintaks untuk bagian exception ini adalah :
EXCEPTION
WHEN nama_exceptional THEN
Pernyataan PL/SQL;
Contoh
penggunaan
bagian
exception
dengan
pre-defined
exception
NO_DATA_FOUND :
65 | O r a c l e & P L / S Q L
1 SQL> DECLARE
2 produk_row kategori%ROWTYPE;
3
4 BEGIN
5
6 DBMS_OUTPUT. ENABLE;
7
8 SELECT * INTO produk_row
9 FROM kategori
10 WHERE
11 Nama_kategori = Tidak Ada ;
12 END;
13 /
declare
*
ERROR at line 1:
ORA-01403 : no data found
ORA-06512 : at line 5
Pada contoh ini ketika perintah SELECT memasukkan data pada table
kategori dimana kolom nama_kategori = Tidak Ada, karena nama_kategori
itu tidak akan ditemukan dalam table kategori, maka pesan kesalahan NO
DATA FOUND akan ditampilkan.
66 | O r a c l e & P L / S Q L
67 | O r a c l e & P L / S Q L
10
11 BEGIN
12
13 DBMS_OUTPUT . ENABLE;
14
15 FOR catatan_no_pembeli IN (SELECT no_pembeli
16
17 LOOP
18 ind :+ ind +1;
19 no_pembeli_ind(ind):=catatan_no_pembeli.no_pembeli;
20 END LOOP;
21
22 Akhir := ind;
23
24 FOR ind 1 .. akhir
25
26 LOOP
27 Dbms_output.put_line (no_pembeli_ind( || TO CHAR (ind)
28 || ) = || no_pembeli_ind (ind));
29
30 END LOOP;
31 END;
68 | O r a c l e & P L / S Q L
Jika program PL/SQL tersebut dieksekusikan, akan tampil hasil sebagai berikut :
SQL > /
No_pembeli_ind(1) = 5001
No_pembeli_ind(1) = 5002
No_pembeli_ind(1) = 5003
No_pembeli_ind(1) = 5004
No_pembeli_ind(1) = 5005
Contoh diatas memperlihatkan cara menggunakan table PL/SQL yang hasilnya
diakses oleh program PL/SQL dan ditampilkan oleh paket DBMS_OUTPUT.
SQL Dinamik
Ada dua cara menggunakan SQL dinamik dalam PL/SQL yaitu SQL
Dinamik native dan paket DBMS_SQL dinamik native dapat diletakkan secara
langsung didalam PL/SQL seperti perintah create table log_eror yang dijalankan
melalui melalui EXECUTA IMMEDIATE.
Selain statement DDL untuk mereferensi objek yang belum tersedia pada
saat kompilasi, sql dinamik juaga dapat emnggunakan statement control transaksi,
control session, control system, dan statement DML. SQL dinamik insert into
log_eror pada contoh di atas dikerjakan dengan paket DBMS_SQL. Paket
PL/SQL ini memiliki beberapa prosedur seperti utnuk membuka, parsing, dan
mengeksekusi cursor.
PL/SQL
Pl/sql mengombinasikan kemampuan manipulasi data sql dengan
kemampuan bahasa procedural,dengan kata lain pl/sql adalah sql ditambah
procedural language. Pl/sql merupakan bahasa berstruktur blog yang berupa
69 | O r a c l e & P L / S Q L
[DECLARE
Declarasi variable]
BEGIN
Kode program
[EXCEPTION
Penanganan error]
END;
Selain membuat fungsi dan prosedur, pl/sql juga digunakan untuk
menghasilkan untuk mengelompokkan fungsi dan prsedur, serta untuk pembuatan
kode program dalam trigger. Tentu saja defeloper akan sering memanfaatkan
pl/sql untuk membuat modul atau program baik yang dilakukan melalui SQL *
Plus, Form Builder, Prosedural Builder, maupun Oracle Portal
70 | O r a c l e & P L / S Q L
desebabkan blok pl/sql tidak disimpan di database meskipun blok itu bisa
disimpan pada file system operasi.
Dalam pemrograman reguler, blok blok pl/sql anonim itu dapat diubah
menjadi fungsi, prosedur, atau paket sehingga blok pl/sql bisa direferensi melalui
namanya dan menghindari duplikasipembuatan kode program.
a. Parameter
Sub program dipanggil denhgan melewatkan nilai, variabel, atau ekspresi
seseuai parameter yuang ada. Variabel yang berada pada statement pemanggil sub
program atau yangh disebut parameter aktual akan dikirimkan ke parameter
formmal, yaitu variabel yang dideklarasikan pada fungsi atatu prosedur yang
dipanggil. Parameter formal dan aktual itu harus memiliki tipe data yang sama
atau kompatibel.
Pemanggilan sub program untuk melewatkan parameter aktual dapat
dilakukan dengan cara notasi posisi parameter, notasi nama parameter, dan notasi
kombinasi. Penetapan notasi posisi melakukan pemanggiolan sub program
berdasarkan posisi atau urutan parameter formal.
b. Mode parameter
Parameter formal menerima nilai atau variabel dari parameter aktual.
Subprogram dapat menggunakan parameter formal sesuain mode parameter yang
ditetapkan yaitu IN, OUT dan IN OUT. Secara default setiap parameter formal
menggunakan mode IN yang berarti bahwa parameter itu hanya dapat dibaca atau
direferensi dalam body subprogram.
Mode OUT berarti parameter formal hanya dapat ditulis atau diberikan
nilai, sedangkan mode IN OUT memungkinkan parameter formal untuk dibaca
dan ditulis. Jadi untuk dapat mengembal\ikan berbagai nilai maka subpreogram
harus menggunakan mode OUT ataub mode IN OUT,sedangkan mode IN bersifat
seperti konstanta yang tidakn dapat dimodifikasi dalam bodyprosedur yang
dipanggil.
71 | O r a c l e & P L / S Q L
pengiriman
paremeter
by
reference,
sebaiknya
pengiriman
Sub Program
Sub program adalah blok pl/sql dengan nama yang dapoat menggunakan
parametter serta bisa dipangguil oleh statement sql. Sub program terdiri dari
prosedur untuk mengerjakan suatu proses dan function yang mengembalikan
72 | O r a c l e & P L / S Q L
suatau nilai. Sub program itu disimpan dalam database sebagai object schema dan
disebut sebagai stored prosedure dan stured function
Compiler pl/sql akan membuat parse tree dan pseudo code dari stored sub
program itu sehingga ketika sub program dieksekusi pertama kali, engine pl/sql
akan menjalankan pseudo code dan membawanya ke shared pool. Sub program ini
dapat dijalankan ulanng tanpa perlou recompilasi karena code program dan bentuk
compilasinya disimpan pada database dan statusnya ada di data dictionary.pada
blok pl/sql anonim, setiap kali blok tu dijalankan maka blok akan diparsing,
dikompilasi, dan ditempatkan pada shared pool.
Proses reparsing dan recompilasi tidak dilakukan jika blok telah berada di
shred pool.Namun jika bentuk terkompilasi blok terseebut tidak ada di shared pool
peroses parsing, kompilasi harus dilakukan ulang.
a. Fungsi
Fungsi adalah syb program yang mengembalikan suatu nilai. Fungsi terdiri
dari 2 bagian yaitu spesifikasi dan body . bagian spedifikan dimulai dari keyword
function hingga keyword return. Bagian body dimulai dari keyword IS atau AS
hingga keyword AND dan mencakup bagian deklarasi, kode [program dan
ekseption.
b. Stored function
Stored function adalah fungsi yang disimpan dalam databasse seperti
halnya tabel, stoder function merupakan objek schema dan bisa direferensi ole
statement sql. Perubahan fungsi menjadi stored funcotion dilakukan dengan
mmenyertakan klausa create yuntuk menyimpan de database namun apabila
fungsi itu sudah ada, sertakan klausa or replaceuntuk modifikasinya
c. Pepelined
Pepelined poada fungsi akan mengembalikan secara berulang hasil dari
fungsi tabel yang berupa tipe koleksi ( nested table atau varray).
73 | O r a c l e & P L / S Q L
d. Pragma restrict_references
Untuk dapat digunakan melalui statement sql, suatu stored function harus
mematuhi aturan purity untuk mengontrol side effect.
e. prosedur
adalah sub program yang umumnya digunakan untuk mengerjakan suatu
proses. Prosedur terdiri dari 2 bagian yaitu spesifikasi dan body.
f. Stored prosedure
Adalah prisedur yang disimpan pada database sebagai objek schema.
Suatu prosedur dapat diubah menjadi stored prosedure dengan menyertakan
klausa cretae pada definisi prosedur
g. Overloading
Overloading memungkinkan prosedur dan fungsi menggunakan nama
sama. Sub program yang di overload harus menggunakan parameter formal yang
berbeda seperti jumlah paramter, urutan, dan tiprn datanyasub program atau
metode tipe dapat di overloadanjika berada dalam paket.
h. Definer dan invoker rigths
Agar user dapat ememb uat sub program pada schemanya, ia harus
memiliki privileghe system create prosedure, sedangkan pembuatan sub program
pada schema user lain dimungkinkan apabila user memiliki privilege sistem create
any prosedure.
i. Status sub program
Sub program dalam database yang telah dikompilasi tanpa kesalahan akan
bersetatus valid Status itu disimpan pada dictionatry sehingga dapat dideteksi
bilamana objek berstatus valid atau invalid.
j. Melihat source sub program
Source sub program yang disimpan dalam database dapat dilihat melalui
view dictionary
74 | O r a c l e & P L / S Q L
DBA_SOURCE.
Transaksi otonom adalah transaksi independen (autonomous) yang tidak
berbagi pakai resources dengan transaksi induknya oleh karena itu rollback pada
transaksi induk tidak mempengaruhi status transaksi otonom (TO) dan commit
pada TO akan segera tampak bagi transaksi lain, serta eksepsi yang terjadi pada
transaksi otonom meneyebabkan rollback pada transaction level bukan statement
level.
Transaksi otonom itu tidak dapat melihat perubahan yang belum di
commit dan tidak berbagi pakai penguncian (Locking) dengan transaksi induk.
a. Menetapkan transaksi otonom
Suatu transaksi akan bersifak independen jika terdapat pragma atau compiler
detective autonomous_transaction. Pragma ini mengionstruksikan compiler pl/sql
untuk menandai suatu rutin yang independent.
b. Kontrol Transaksi otonom
Ketika rutin otonom dijalannkan, transaksi indik ditangguhkan (suspend) dan
dilanjutkan setelah TO berakhir. Perintah commit dan rollback mengakhiri TO
untuk kemudian melanjutkan statement berikutnya. Statement save point
ditransaksi pemanggil tidak berhubungan dengan save pointy di TO sehinggan
rollback ke save point hanhya dapat dilakukan pada konteks transaksi individual.
Jadi dengan PL/SQL kita tidak perlu menggunakan sebuah bahasa
pemrograman sendiri. Fungsi-fungsi standard di bahasa pemrograman sudah ada
di sini dan bisa langsung digabung dengan perintah SQL untuk memanipulasi
database. Tapi PL/SQL cuma ada di database oracle saja 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
75 | O r a c l e & P L / S Q L
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
SEGERA MELAKSANAKAN.
Oracle Corporation lazim menambah fungsionalitas setiap rilis paket dengan
berturut-turut dari Database Oracle.
<<label>>
DECLARE
TYPE / item / FUNCTION / PROCEDURE declarations
BEGIN
Statements
EXCEPTION
EXCEPTION handlers
END label;
Para <<label>> dan MENYATAKAN dan bagian PENGECUALIAN adalah
opsional.
76 | O r a c l e & P L / S Q L
Pengecualian, kesalahan yang timbul selama pelaksanaan kode, memiliki satu dari
dua jenis:
1. Predefined pengecualian
2. Ditetapkan pengguna pengecualian.
Tipe data utama dalam PL / SQL
77 | O r a c l e & P L / S Q L
sederhana
PL/SQL adalah
Peningkatan Kinerja
78 | O r a c l e & P L / S Q L
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.
Misalkan untuk membaca hasil suatu perintah SELECT untuk diproses dan
hasilnya
digunakan untuk melakukan proses lainnya
79 | O r a c l e & P L / S Q L
REFERENSI
https://docs.google.com/viewer?a=v&q=cache:q2pasWjTkxcJ:blog.uinmalang.ac.id/faizz/files/2010/10/PLSQL1.pdf+&hl=id&gl=id&pid=bl&srcid=ADGEESg_2ohFIlWyteVHbIorxQGEJ
Q7NWUA0La1s7wvtOCQfzzvRjrPDG6JGd8OIY1zEiphyGvfwRobETlAQLKocrrq
ZC1n-7YdmCf8VUqPcwDzQ0Kk5y898-boNA3-Iwo3nCpzJN12&sig=AHIEtbQeOtPyZ6XwavK5CEogA_B1a5vbTQ
https://docs.google.com/viewer?a=v&q=cache:hxr0zOcX3FIJ:blog.uinmalang.ac.id/javazone/files/2010/10/Artikel-PL-SQL-dan-ClusterComputing.pdf+&hl=id&gl=id&pid=bl&srcid=ADGEESjubJHWORHqH0lERcc6heeYaLET7CnyCtbMScf0uMoCZuMMvf1SoVhTh23dTV59zA8dsVo_dMQz3Gx
3z874jSIHcqmywNV3zAzgGG9MPl_q59AhnKFjaEE2BacSsaXEJPEBDY&sig=AHIEtbRxGWPlF4TQAC5PvdmvVV_RHylWA
80 | O r a c l e & P L / S Q L