100030149-pl-sql

35
PRAKTIKUM SISTEM BASIS DATA II PL / SQL Oleh : Nama : I Gd Edy Artana NIM : 100030149 Program : Strata Satu (S1) Jurusan : Sistem Informasi SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN TEKNIK KOMPUTER (STMIK) STIKOM BALI 2013

Upload: edy-artana

Post on 31-Dec-2015

79 views

Category:

Documents


0 download

TRANSCRIPT

PRAKTIKUM SISTEM BASIS DATA IIPL / SQL

Oleh :

Nama : I Gd Edy Artana NIM : 100030149 Program : Strata Satu (S1) Jurusan : Sistem Informasi

SEKOLAH TINGGI MANAJEMEN INFORMATIKADAN TEKNIK KOMPUTER

(STMIK) STIKOM BALI2013

Daftar Isi

Daftar Isi......................................................................................................... ii

Daftar Gambar............................................................................................... iii

1. Pengenalan PL ( Prosedural Language )..........................................1

1. Struktur PL/SQL.............................................................................2

2. Bentuk Umum Struktur PL/SQL........................................................5

2. DBMS_OUTPUT............................................................................6

3. Tipe Data.......................................................................................6

4. Variabel dan Konstanta.................................................................7

3. Struktur Blok PL/SQL......................................................................11

4. Tabel PL/SQL.................................................................................12

5. PL/SQL...........................................................................................19

6. DBA_SOURCE...............................................................................22

7. Keuntungan Penggunaan PL/SQL..................................................23

Daftar Pustaka..............................................................................................25

Daftar Gambar

Gambar 1 Logika SQL................................................................................1

Gambar 2 Print Screen Struktur PL/SQL....................................................6

Gambar 3 Print Screen Komentar.............................................................10

iii

1. Pengenalan PL ( Prosedural Language )

Structured query language (SQL) merupakan bahasa untuk

berkomunikasi dengan database relasional yang bersifat deklaratif

(bukan prosedural) dengan menyatakn hasil (bukan cara

memperoleh hasil ).

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.

Bagi seorang programmer, menguasai SQL adalah sebuah

kewajiban, karena program jaman sekarang pasti menggunakan

database untuk menyimpan datanya. Bagi saya sendiri yang bisa

menggunakan program PHP, biasa menggunakan database mysql

Gambar 1 Logika SQL

dan oracle. Jadi untuk membuat sebuah aplikasi saya

menggunakan program PHP dan database.

Sementara khusus bagi oracle, ada istilah PL/SQL. PL/SQL yang

merupakan singkatan dari Procedural Language/Structured Query

Language merupakan sebuah penggabungan antara bahasa

pemrograman prosedural (PL) dan SQL syntax. Jika digambarkan

sebagai berikut :

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.

1. 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.

2

[DECLARE

………declarations]

BEGIN

………statements

[EXCEPTION

………handlers]

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

exception-handling. (Dalam PL/SQL, peringatan dan kondisi

error disebut dengan exception). Bagian executable merupakan

bagianyang mutlak harus ada pada suatu blok 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

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(;)

3

Komentar diawali dengan tanda min dua kali(--) atau diapit

dengan tanda /*…*/

Pemberian nilai menggunakan :=

Dapat menggunakan Bind Variable

Tanda garis miring(/) berarti “run”

Contoh PL/SQL

Sub Program :

a. Nama dari blok PL/SQL yang dapat menerima

parameter dan dapat dipanggil terdapat dua jenis:

o Sebuah prosedur yang digunakan untuk melakukan

suatu kegiatan tertentu

o 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.

d. Semua program PL/SQL harus mengikuti struktur

pemrograman sebagai berikut :

o 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.

o 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.

4

o Bagian Eksekusi (Execution)

Bagian ini memuat pernyataan-pernyataan PL/SQL

yang akan ditulis. Bagian eksekusi ini harus dimulai

dengan perintah BEGIN.

o Bagian Perkecualian (Exception)

Bagian ini memuat cara menangani kesalahan-

kesalahan (error) pada waktu eksekusi program

PL/SQL. 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.

2. Bentuk Umum Struktur PL/SQL

5

DECLARE variabel tipe_data; konstanta CONSTANT tipe_data := nilai;

... BEGIN

statement_1; statement_2;

... EXCEPTION WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;

1. ... 2. END;

Gambar 2 Print Screen Struktur PL/SQL

2. 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.

3. Tipe Data

a. Tipe Data dasar :

- Numerik

- NUMBER, BINARY_INTEGER, DEC, DOUBLE

PRECISION, INTEGER, INT,

- NUMERIC.

- Karakter

- VARCHAR2, CHAR, LONG

6

- DATE

- BOOLEAN

- ROWID

b. 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 data NATURAL dan

POSITIVE merupakan subset dari BINARY_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 Dari row suatu tabel

tertentu.

5. Tabel dan Record

Tipe data komposit untuk pemakaian yang lebih

kompleks.

4. 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

7

Bentuk Umum :

variable_name datatype [NOT NULL := value ];

Keterangan :

o Variable_name adalah nama variabel.

o Datatype adalah valid PL / SQL datatype.

o NOT NULL adalah sebuah spesifikasi opsional pada

variabel.

o Nilai atau DEFAULT juga merupakan spesifikasi

opsional, di mana anda bisa menginisialisasi variabel.

o Setiap deklarasi variabel adalah pernyataan terpisah

dan harus diakhiri dengan titik koma.

Contoh Deklarasi Variabel :

Ketika variabel ditetapkan sebagai TIDAK NULL, Anda harus

menginisialisasi variable ketika dideklarasikan. Contoh di bawah ini

menyatakan dua variabel, salah satunya adalah tidak null.

8

DECLARE X integer; Alamat varchar2(40); No_induk char(8);

..... BEGIN

X := 12; Alamat := „HAYAM WURUK 41, Denpasar‟; No_induk := „IDD12345‟;

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.

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.

Sintaks Umum adalah:

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 :

9

SELECT column_name

INTO variable_name

FROM table_name

[WHERE condition];

DECLARE

pi CONSTANT real := 3.14;

lebar CONSTANT integer := 100;

Komentar

Digunakan untuk memudahkan proses maintenance

Jenis komentar :

Contoh :

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.

3. Struktur Blok PL/SQL

Terdapat tiga bagian :

10

/* ... */ : untuk beberapa baris komentar

-- ... : untuk satu bari komentar

/* Ini adalah komentar Oracle */

-- Ini juga komentar Oracle

Gambar 3 Print Screen Komentar

1. Bagian pendeklarasian tipe data (opsional)

2. Bagian penulisan perintah

3. Bagian eksepsi (opsional)

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 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 :

a. BOOLEAN – dipakai untuk menyatakan data logika, yaitu TRUE

(benar), FALSE (salah), dan NULL (kosong).

b. BINARY_INTEGER – digunakan untuk mendeklarasikan bilangan

yang tidak mempunyai angka decimal. Tipe data NATURAL dan

POSITIVE merupakan subset dari BINARY_-INTEGER.

c. %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.

d. %ROWTYPE - tipe data ini menandakan bahwa sekelompok

variable tertentu adalah sama dengan tipe data dari row suatu table

tertentu.

e. Table dan Record – tipe data komposit (composite datatype) untuk

pemakaian yang lebihkompleks.

11

Contoh deklarasi konstanta :

Contoh deklarasi variable :

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.

4. 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

12

DECLARE Temperatur_asal Nilai_mula NUMBER := 0; NUMBER (2) := 100;

DECLARE Temperatur Nama Alamat NUMBER (3.2); VARCHAR2 (30); %TYPE;

mengakses data-data yang dihasilkan oleh PL/SQL, yaitu dengan

menggunakan paket DBMS_OUTPUT.

Syntax yang harus digunakan untuk mendeklarasikan table PL/SQL

adalah :

Record PL/SQL

Record PL/SQL adalah tipe data komposit lain yang dapat dideklarasikan

dengan syntax sebagai berikut :

Record ini menggunakan tiga kolom dari table pembeli yang sudah ada

dan satu kolom baru yang tidak ada didalam table pembeli.

C. Bagian Eksekusi

13

TYPE nama_tipe IS TABLE O nama_tabel .nama_kolom%TYPE INDEX BY BINARY_INTEGER;

Contoh mendeklarasikan table PL/SQL :

DECLARE TYPE tipr_no_pembeli IS TABLE OF Pembeli .no_pembeli%TYPE INDEX BY BINARY_INTEGER;

DECLARE

TYPE

(no_pembeli record_no_pembeli IS

RECORD

nama_pembeli pembeli .no_pembeli

%TYPE,

alamat pembeli .nama%TYPE

gaji number (10) ) ;

Pada bagian ini pernyataan PL/SQL akan kita buat yang menentukan

tujuan program PL/SQL dibuat. Pernyataan pada bagian ini dapat

digolongkan atas :

a. Pernyataan Penentuan (Assignment)

Pernyataan penentuan umumnya ditandai dengan

penggunaan operator sama-dengan (:=) seperti contoh :

nomer_awal := 1;

nomer_akhir := 100;

temp := tem + 1;

temp_c := (5/9)*(temp_f – 32);

b. Pernyataan Flow Control

Pernyataan flow control ini merupakan pernyataan yang

paling sering dipakai untuk mengatur langkah-langkah suatu

program. Operator relasi yang dapat digunakan antara lain :

IF, ELSE, ELSEIF

LOOP, END LOOP

EXIT, EXIT WHEN

WHILE LOOP, END LOOP

FOR LOOP, END LOOP

GOTO

NULL

Catatan:

Operasi-operasi relasi juga merupakan kata-kunci yang tidak boleh

digunakan sebagai nama variable pada pembuatan deklarasi

program PL/SQL.

Contoh pernyataan flow control dengan perintah IF dan ELSE :

IF harga > 200000000 THEN

Diskon := harga * 0.1;

END IF

IF harga > 200000000 THEN

14

Diskon := harga * 0.1;

ELSEIF

Harga > 150000000 AND

Harga < 200000000 THEN

Diskon := harga * 0.75;

ELSE

DISKON := 0;

END IF;

Contoh flow control dengan perintah LOOP :

LOOP

i =: i + 1;

INSERT INTO jumlah_qty(id, qtyot)

EXIT WHEN i = 10; END LOOP;

VALUES (i, qty);

Contoh dengan numeric loop :

FOR I IN 1 .. 10

LOOP

DBMS_OUTPUT.PUT_LINE(I);

END LOOP;

Catatan : Program ini akan membuat loop sepuluh kali.

Pernyataan SQL

Pernyataan-pernyataan SQL dapat disisipkan di dalam suatu

program PL/SQL. Dengan menyisipkan pernyataan SQL tersebut,

program PL/SQL dapat memproses data table dengan mudah seperti

contoh berikut :

IF temp := 0 THEN

INSERT INTO

tabel_temp (nomer, date)

VALUES

(temp, sysdate);

END IF

15

Program ini akan mengisi table bernama “table_temp”, jika nilai temp = 0

dengan menggunakan perintah INSERT.

Pernyataan Kursor

Jika mengeksekusikan suatu pernyataan SQL lewat PL/SQL,

Oracle akan menciptakan suatu ruang kerja pribadi yang dinamakan PGA.

Di dlam ruang ini data yang dikembalikan oleh pernyataan SQL akan

disimpan.

Nama Kursor adalah suatu pointer (penunjuk) ke ruang tersebut. Sebelum

dapat dipakai, kursor harus dideklarasikan dahulu seperti contoh :

DECLARE CURSOR c_pembeli IS

SELECT *

FROM pembeli

Kursor “c_pembeli” ini akan merupakan pointer ke ruang kerja pribadi di

mana hasil pernyataan “SQL SELECT * FROM pembeli” disimpan. Semua

nama kursor yang dideklarasikan pada suatu program PL/SQL disebut

kursor eksplisit. Karena ada pula kursor yang dinamakan kursor implisit

berupa setiap pernyataan SQL yang dieksekusi oleh PL/SQL.

Pada pembuatan kursor eksplisit, kolom-kolom yang ingin dipanggil oleh

perintah SELECT dapat di tentukan seperti contoh :

DECLARE CURSOR c_pembeli IS

SELECT no_pembeli, nama, alamat

FROM pembeli;

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

16

• 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;

WHEN nama_exception THEN

Pernyataan PL/SQL;

END;

E. Cara Mengakses Hasil PL/SQL

Oracle menyediakan dua cara untuk mengakses data-data yang

dihasilkan oleh PL/SQL,yaitu :

• Dengan menggunakan paket DBMS_OUTPUT

• Paket DBMS_OUTPUT ini disediakan oleh oracle untuk digunakan

dengan SQL*PLUS.

Paket ini terdiri atas sejumlah prosedur dan fungsi siap pakai yang

mengatur intput/output suatu data untuk digunakan oleh PL/SQL.

Dengan menggunakan Tabel PL/SQL

Contoh penggunaan table PL/SQL pada suatu program PL/SQL :

1 SQL> DECLARE

2 TYPE tupe_no_pembeli IS TABLE OF

3 Pembeli.no_pembeli%TYPE

4 INDEX BY BINARY_INTEGER;

17

5

6

7 no_pembeli_ind tipe_no_pembeli;

8 ind BINARY_INTEGER := 0;

9 akhir BINARY_INTEGER;

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;

Jika program PL/SQL tersebut dieksekusikan, akan tampil hasil sebagai

berikut :

SQL > /

No_pembeli_ind(1) = 5001

No_pembeli_ind(1) = 5002

18

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.

5. 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

fungsi, prosedur, dan blok anonym. Suatublok biasanya ditujukan untu

menyelesaikan suatu tugas tertentu dan suatu blok boleh memliki sub-blok

(nested). Struktur blok pl/sql itu terdiri dari bagian deklarasi, bagian kode

program, dan bagian eksepsi untuk penanganan eror seperti Nampak di

bawah ini:

[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.

Blok pl/sql anonym

19

Blok pl/sql anonym adalah blok pl/sql tanpa nama dan tidak

menggunakan parameter. Blok anonym tidak disimpan dalam database

swhinggan tidak bisa direferensi oleh blok pl/swql lain.Pada saat blok ini

dijalankan pertama kali,menempatannya shared pool harus didahului

dengan proses parsing dan kompilasi. Proses reparsing dan frekompilasi

tidak dilakukan jika blok telas berada di shared pool.

Apabila blok pl/sql itu telah dikeluuarkan dari shared pool, eksekusi ulang

terhadap blok pl/sql tadi arus melalui tehapad parsing dan kompilasi.

Inidesebabkan 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

20

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.

C. Compiler Hint NOCOPY

Proses pengiriman parameter aktual dapat dilakukan dengan

dua cara yaitu by reference dan by value. Pengiriman parameter

aktual secara by reference dilakukan dengan melewatkan

pointervparameter aktual ke parameter formal sehinggan kedua

parameter mereferensi lokasi yang sama. Mekanisme itu

berlanmhgsung pada parameter formal dengan mode IN.

Secara default, pengiriman parameter aktual pada

subprigram yang menggunakan mode OUT dan IN OUT dilakukan

secara by value yaitu nilai parameter aktual dicopykan ke

parameter formal. Setelah eksekusi subperogram diakhiri, nilai

parameter formal akan dikopiakn ke parameter aktual sehingga

nilain parameter aktual berubah. Utnuk mengubah pola pengiriman

by value mengjadi by reference gunakan hint compiler nocopy

sehingga proses copi nilai data dapat dihindari.

Penggunaan copy nilai data antara kedua parameter itu

dapat menurunkan kecepatan eksekusi dan meningkatkan

penggunaan memori terutama pada parameter yang menangani

data berukuran besar seperti record, collection, dan tipe objek.

21

Nocopy menyebabkan perubahan nilai pada parametr formal

segera mempengaruhi nilai parameter aktual. Ini berbeda dengan

kondisi defaultnya dimana jika subprogram berakhir secara tudak

normal maka parameter formal tidak akan dicopy pada parameter

aktual. Sebagai suatu hingt comliper, nocopy melakukan

pengiriman paremeter by reference, sebaiknya pengiriman

pewaremeter aktual dilakuakan secara by value.

6. 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

22

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 Oracle Database telah memasukkan fitur yang

berhubungan dengan objek-orientasi. PL / SQL program unit (dasarnya

kontainer code) dapat dikompilasi ke databaseOracle. 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.

7. Keuntungan Penggunaan PL/SQL

Integrasi

- Memungkinkan Aplikasi dan Oracle Server menggunakan

Library yang dapat digunakan bersama-sama dalam bentuk

stored procedure

- Peningkatan Kinerja

23

- 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.

24

Daftar Pustaka

Pramudiastiro, R. Pahlevi, R,R. Achmadi, S. 2013. Oracle PL/SQL.

Makalah Sistem Informasi Oracle PL/SQL.

25