PL SQL
PL SQL
PL/SQL DAN
TIPE DATA
KELOMPOK :
TOBY ZULKARNAIN
YOHANES ARDIAN C
PENDAHULUAN
Karena pada SQL tidak mendukung
variable
untuk
digunakan
selama
Identifier typedata
NULL] [:=iekspresi];
[(presisi,
skala)]
[NOT
Dimana ekspresi bisa merupakan literal, variabel yang lain atau sebuah ekspresi yang terdiri atas operator
dan fungsi. Jika nilai inisial/awal
tidak diberikan, maka suatu variabel akan diberikan nilai NULL untuk nilai
alamat
inisialnya.
VARCHAR2(20);
Contoh untuk data karakter :
kodepos CHAR(5) :=
40257;
Tanda := dipakai untuk menugaskan (assign) nilai kepada suatu variabel. Nilai inisial/awal atau disebut juga
nilai default adalah nilai yang diberikan pada saat awal variabel tersebut dideklarasikan.
FLOAT
DOUBLE
PRECISION
REAL
DEC [(p [,s])]
DECIMAL [( p
[,s])]
NUMERIC [(p
[,s])]
INTEGER [(n)]
INT [(n)]
SMALLINT [(n)]
BINARY_INTEGER
Keterangan
Data lojikal dengan nilai TRUE atau FALSE.
Data tanggal waktu. Nilai yang valid adalah antara 1
Januari 4712 SM sampai dengan 31 Desember 9999.
Tipe data numerik dengan p angka penting dan sejumlah s
angka penting di belakang koma. Nilai p adalah integer
dengan nilai maksimal 38 dan nilai s berada pada rentang
-84 sampai dengan 127. Nilai s negatif berarti pembulatan
sampai dengan 10s terdekat.
Turunan dari NUMBER. Presisi sampai dengan 38 digit.
Sama dengan FLOAT.
Turunan dari number. Presisi sampai dengan 18 digit.
Sama dengan NUMBER [(p [,s])].
Sama dengan NUMBER [(p [,s])].
Sama dengan NUMBER [(p [,s])].
Sama dengan NUMBER [(n,0)].
Sama dengan NUMBER [(n,0)].
Sama dengan NUMBER [(n,0)].
Tipe variabel ini digunakan menyimpan nilai mulai dari
NATURAL
NATURALN
POSITIVE
POSITIVEN
SIGNTYPE
PLS_INTEGER
VARCHAR2(n)
VARCHAR(n)
CHAR [(n)]
STRING(n)
CHARACTER
NCHAR [(n)]
NVARCHAR2(
n)
RAW(n)
LONG RAW
[(n)]
ROWID
UROWID [(n)]
BFILE
BLOB
CLOB
NCLOB
%TYPE
%ROWTYPE
PENDEKLARASIAN KONSTANTA
Sintaks :
Identifier
CONSTANT
typedate[(presisi,skala)] := ekspresi;
Contoh :
pi CONSTANT
NUMBER(9,2):=3.14;
Atribut Variabel
Jika menggunakan variabel yang menampung nilai dari suatu kolom dari suatu tabel, maka
sebaiknya menggunakan atribut variabel. Hal ini untuk menghindari terjadinya kerepotan seperti:
user harus melihat struktur tabel yang terkait terlebih dahulu untuk memberikan tipe data yang
cocok. Selain itu jika terjadi tipe data kolom maka deklarasi variabel tersebut harus diubah juga.
Atribut variabel berfungsi untuk memberikan tipe data yang sama dengan tipe data suatu kolom
dari suatu tabel. Atribut variabel juga dapat digunakan untuk tipe data record. Dengan demikian,
atribut variabel ada dua. Untuk atribut kolom digunakan %TYPE, sedangkan untuk atribut record
gunakan %ROWTYPE.
DECLARATION SECTION
Digunakan untuk mendefinisikan atau mendeklarasikan variabel, konstanta, cursor
dan seluruh exception yang didefinisikan oleh user yang akan digunakan pada bagian
eksekusi. Penulisan blok ini dimulai dengan menulis DECLARE.
Contoh:
declare
v_nama mahasiswa.nama%type;
v_nim mahasiswa.nim%type;
EXECUTABLE SECTION
Digunakan untuk mengeksekusi atau menjalankan blok perintah PL/SQL seperti
pengulangan, percabangan, perintah SQL dan perintah cursor. Berisi statement SQL
untuk memanipulasi data pada basis data dan statement PL/SQL untuk memanipulasi
data dalam blok.
Declare
v_nama mahasiswa.nama
Contoh:
%type;
v_nim mahasiswa.nim
%type;
begin
select nim, nama into v_nim,
v_nama
from pegawai
where nim=30108001
dbms_output.put_line(v_nam
a);
exception
when no_data_found then
dbms_output.put_line(gak
EXCEPTION SECTION
Merupakan bagian yang akan diaktifkan bila terjadi kesalahan atau pengecualian
pada saat menjalankan program PL/SQL. Exception section terdiri atas predefined dan
user defined. Sebagai
Declare contoh exception predefined NO_DATA_FOUND akan diaktifkan
bila perintah DML
SQL tidak
menemukan data dalam klausa WHERE.
v_nama
mahasiswa.nama
Contoh:
%type;
v_nim mahasiswa.nim
%type;
begin
select nim, nama into v_nim,
v_nama
from pegawai
where nim=30108001
dbms_output.put_line(v_nama);
exception
when no_data_found
then
dbms_output.put_line(gak
STRUKTUR KONDISIONAL
Perintah IF terdiri atas tiga bentuk, yaitu IF THEN, IF THEN ELSE, serta IF THEN ELSEIF.
Struktur dari ketiganya ditampilkan dalam satu rumusan umum sebagai berikut:
IF kondisi 1 THEN
Baris perintah...
[ELSIF kondisi 2 THEN
Baris perintah...]
...
[ELSE
baris perintah..]
END IF;
Baris pada baris perintah dapat berupa perintah IF sehingga akan membentuk blok
IF bersarang. Bagian ELSIF bisa muncul beberapa kali sesuai dengan kebutuhan
sedangkan bagian ELSE biasanya dipakai untuk menangani kondisi jika semua
kondisi
Declare pada kalang IF... THEN atau ELSIF... THEN tidak terpenuhi. Namun bagian
penuhini
exception;
ELSE
bisa saja tidak digunakan.
n1 number;
contoh:
STRUKTUR ITERASI
Pernyataan Loop
Untuk perintah LOOP, akan dilakukan pengulangan terus-menerus. Bentuk umum dari
pernyataan LOOP sebagai berikut:
LOOP
//Baris perintah
END LOOP;
Karena tidak mempunyai kondisi untuk keluar dari iterasi, maka perlu digunakan
perintah EXIT. Perintah EXIT dapat digunakan dengan cara seperti berikut:
EXIT WHEN kondisi;
STRUKTUR ITERASI
DECLARE
x number;
BEGIN
x := 0;
LOOP
x := x + 1;
EXIT WHEN x > 5; -- exit loop immediately
END LOOP;
dbms_output.put_line('Hasil looping : '||x);
END;
Perintah FOR-LOOP melakukan iterasi selama nilai COUNTER berada dalam range nilai
i_terendah dan i_teratas. Pada FOR-LOOP, counter tidak perlu dideklarasikan. Penggunaan kata
kunci RESERVE akan menyebabkan nilai counter dimulai dari i_teratas ke i_terendah. Dua titik
antara i_terendah dan i_teratas merupakan operator rentang nilai. i_terendah maupun i_terkecil
bisa berupa nilai integer ataupun variabel yang bernilai integer yang sudah dideklarasikan
sebelumnya. i_upper harus lebih besar dari i_lower dan jika tidak maka iterasi tidak akan
dilakukan.
CONTOH:
BEGIN
FOR vno IN 1..10 LOOP
insert into coba(no)
values vno;
dbms_output.put_line('Ha
sil looping ke- '||x);
END LOOP;
END;
PERINTAH GOTO
Perintah ini digunakan untuk mengarahkan proses ke baris yang ditandai dengan
label tertentu. Bentuk umum pemakaian perintah ini adalah:
GOTO nama_label;
Untuk memberikan label pada suatu baris tertentu, gunakan format penamaan label
seperti berikut ini:
<<nama_label>>
Penggunaan perintah GOTO dalam jumlah yang banyak akan menyebabkan suatu
blok PL/SQL menjadi tidak terstruktur. Karena itu sebaiknya penggunaan GOTO ini
dihindari.
CONTOH:
DECLARE
x number;
BEGIN
x := 0;
LOOP
x := x + 1;
IF x = 5 THEN
GOTO EndOfLoop;
END IF;
END LOOP;
<<EndOfLoop>>dbms_out
put.put_line('Hasil looping
: '||x);
END;
PERINTAH GOTO
Dengan adanya perintah goto iterasi, proses berikutnya menuju baris
<<iterasi>> yang berada beberapa sebelum baris goto tersebut. Selanjutnya,
perintah-perintah yang mengikutinya akan diproses sesuai dengan urutannya
(sekuensial). Sedangkan perintah <<lbl_end>> menentukan proses berikutnya
adalah baris <<lbl_end>> yang berada setelah perintah goto tersebut.
Namun demikian, pada saat menggunakan perintah goto harus diperhatikan halhal berikut:
perintah goto tidak boleh menuju label yang berada dalam perintah IF, LOOP, blok
lain dan blok yang menjadi sub bloknya.
Sebuah label harus diikuti oleh paling tidak sebuah perintah eksekusi PL/SQL. Kata
atau reserved word seperti END, END IF dan END LOOP tidak termasuk sebagai
perintah eksekusi. Tetapi NULL termasuk perintah eksekusi.
PENDAHULUAN
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.
program aplikasi.
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
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.
2. 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.
3. Bagian Eksekusi (Execution).
Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis. Bagian eksekusi ini harus dimulai dengan perintah BEGIN.
4. 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.
KONSTANTA
Digunakan untuk menyimpan sebuah nilai di memori komputer. Nilai yang disimpan
bersifat tetap (konstan)
Contoh Deklarasi Konstanta :
DECLARE
pi CONSTANT real := 3.14;
lebar CONSTANT integer := 100
Variabel
Dapat menerima nilai baru atau sebaliknya diubah pada saat program dieksekusi
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
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 berupa Variable, Constant, Cursor dan Exception
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