Pedoman Sintak PL/SQL Identifier Contoh yang benar Contoh yang

advertisement
4/20/2010
Pedoman Sintak PL/SQL
D
Danny Kriestanto
K i t t
Based on Oracle 9i: Program with PL/SQL
Student Guide 1
 Oleh karena PL/SQL merupakan ekstensi dari SQL, aturan‐aturan yang diaplikasikan pada SQL juga berlaku
pada bahasa PL/SQL.
 Sebuah baris pada teks PL/SQL terdiri atas sekelompok
k k yang dikenal
karakter
dik
l dengan
d
nama lexical unit, yang dapat
l i l i d
diklasifikasikan sebagai berikut:
 Delimiter, bisa berupa simbol sederhana (seperti: +, ‐, *, /, =, @, atau ;) atau simbol kombinasi (seperti: <>, !=, ||, ‐‐, /*, */, atau :=)
 Identifier, harus dipisahkan dengan spasi atau tanda baca
 Literal, tidak boleh ada spasi, kecuali untuk string, tanggal
 Komentar, boleh menggunakan spasi
Identifier Contoh yang benar
 Maksimum terdiri atas 30 karakter
 pohon$$$uang
 Harus dimulai dengan karakter alfabet
 SN##
 Dapat terdiri atas angka, tanda dolar, garis bawah
 coba_lagi_
( d
)
(underscore)
 Tidak boleh terdiri atas karakter seperti: ‐ , / , dan
spasi
 Tidak boleh memiliki nama yang sama dengan nama
kolom pada tabel
 Tidak boleh terdiri atas reserved words.
Contoh yang salah
Pedoman Sintak PL/SQL
 titik&garis
 Literal
 Literal berupa karakter dan tanggal harus diapit dengan
menggunakan tanda petik tunggal
 Literal merupakan sebuah angka, karakter, string, atau
angka karakter string atau
nilai Boolean yang tidak direpresentasikan oleh
identifier, contoh: 300 adalah literal numerik, dst.
 jumlah‐debit
 on/off
 user id
v_name := ‘Henderson’;
 Tanda garis miring (/) digunakan untuk menjalankan
blok PL/SQL dalam sebuah file skrip atau tool lain seperti iSQL*Plus.
1
4/20/2010
Pemberian Komentar pada Kode
 Prefiks yang digunakan untuk memberikan komentar satu
baris adalah dua tanda dash (‐‐)
 Letakkan komentar multi‐baris di antara simbol /* dan */
 Contoh:
DECLARE
………
v_sal NUMBER(9,2);
BEGIN
/* Hitung gaji tahunan berdasarkan gaji
bulanan dari setiap pegawai */
v_sal := :g_gaji_blnan * 12;
END; -- Akhir dari blok
Contoh Fungsi SQL di PL/SQL
 Membuat mailing list untuk perusahaan
v_alamat_mail := v_nama ||CHR(10)|| v_alamat ||
CHR(10)||v_propinsi ||CHR(10)
||CHR(10)||v_kodepos;
p
CHR merupakan fungsi untuk mengubah kode ASCII menjadi karakter. 10 merupakan kode untuk line feed.
 Mengkonversi nama pegawai menjadi huruf kecil
v_namap := LOWER(v_namap);
Fungsi SQL di PL/SQL
 Yang tersedia pada pernyataan prosedural:
 Single Row number
 Single Row character
 Konversi tipe data
Sama seperti pada SQL
 Tanggal
 Timestamp
 GREATEST dan LEAST
 Fungsi‐fungsi lain
 Tidak tersedia pada pernyataan prosedural:

DECODE

Fungsi Group, seperti AVG, MIN, MAX, SUM, STDDEV, VARIANCE, yang hanya boleh digunakan di dalam
pernyataan SQL pada blok PL/SQL
Konversi Tipe Data
 Mengubah data ke tipe data yang bersesuaian
 Mencampurkan tipe data dapat menyebabkan error dan
mempengaruhi unjuk kerja
 Fungsi konversi:
 TO
CHAR
O_C
 TO_DATE
 TO_NUMBER
DECLARE
v_tgl DATE := TO_DATE(’12-JAN-2001’, ‘DD-MONYYYY’);
BEGIN
………
Konversi Tipe Data
Blok Berkalang dan Ruang Lingkup
Variabel
 Pernyataan di bawah ini menghasilkan error sewaktu
 Blok PL/SQL dapat ditulis secara berkalang (nested) di
dikompilasi jika variabel v_date dideklarasikan sebagai
tipe data DATE
v date :
v_date
:= ‘Januari
Januari 13, 2001’;
2001 ;
 Agar pernyataan tersebut menjadi benar, gunakan
konversi TO_DATE seperti berikut.
v_date := TO_DATE(‘Januari 13, 2001’, ‘Month DD, 2001’);
manapun pernyataan executable diijinkan.
 Sebuah blok berkalang akan menjadi pernyataan
((statement).
)
 Sebuah exception dapat terdiri dari blok berkalang
 Ruang lingkup sebuah identifier adalah di dalam area sebuah unit program (blok, subprogram, atau paket) dimana identifier direferensi.
 Semua identifier yang berada di dalam blok PL/SQL dianggap lokal di dalam blok tersebut dan global untuk semua subblok yang ada di dalamnya.
2
4/20/2010
Blok Berkalang dan Ruang Lingkup
Variabel
Ruang Lingkup Identifier
Contoh:
…
x BINARY_INTEGER;
BEGIN
Ruang lingkup variabel x
…
DECLARE
y NUMBER;
BEGIN
Ruang lingkup variabel y y := x;
END;
…
END;
Sebuah identifier sifatnya visibel pada daerah dimana
identifer tersebut dideklarasikan dan pada semua
subblok, prosedur, dan fungsi. Jika sebuah blok tidak
menemukan identifier, dideklarasikan
identifier dideklarasikan secara global, global blok tersebut:
 Akan melihat ke atas dari blok induknya
 Tidak akan melihat ke bawah ke bagian subbloknya.
Menentukan Ruang Lingkup
Variabel
Mengkualifikasi Sebuah Identifier
 Qualifier dapat berupa label dari sebuah blok tertutup
 Kualifikasikan sebuah identifier dengan menggunakan prefik label  Latihan
<<outer>>
DECLARE
v_gaji
NUMBER(7,2)
:= 60000;
v_komisi NUMBER(7,2)
:= v_gaji * 0.20;
v_p
pesan
VARCHAR2(255)
:= ‘ memenuhi syarat
pemberian komisi’;
(
)
y
p
;
BEGIN
DECLARE
v_gaji
NUMBER(7,2) := 60000;
v_komisi
NUMBER(7,2) := v_gaji * 0.20;
v_total
NUMBER(7,2) := v_gaji + v_komisi;
BEGIN
v_pesan := ‘KASIR tidak ’ || v_pesan;
outer.v_komisi := v_gaji * 0.30;
pada blok
<<outer>>
DECLARE
tgllahir DATE;
BEGIN
DECLARE
tgllahir
DATE;
BEGIN
……
outer.tgllahir := TO_DATE(’03-AUG-1976’, ‘DD-MONYYYY’);
END;
……
END;
1
END;
v_pesan := ‘SALESMAN ’ || v_pesan;
2
END;
Operator pada PL/SQL
 Logika
Operator
 Aritmetika
 Penggabungan
 Tanda kurung untuk
mengontrol urutan operasi
 Operator eksponensial (**)
Prioritas Operator
Sama spt pada SQL
Operasi
**
Pemangkatan
*, ‐
Identitas, negasi
,/
*, /
+, ‐, ||
Perkalian, pembagian
,p
g
Penambahan, pengurangan, penggabungan
=, <, >, <=, >=, <>, !=, ~=, ^=, IS NULL, LIKE, BETWEEN, IN
Perbandingan
NOT
Negasi logika
AND
OR
Konjungsi
Inklusi
3
4/20/2010
Operator pada PL/SQL
Panduan Pemrograman
Contoh:
 Increment hitung untuk sebuah loop
v_hitung := v_hitung +1;
 Menentukan flag nilai boolean
v_sama := (v_n1 = v_n2);
 Validasi apakah nomor pegawai memiliki sebuah nilai
v_valid := (v_nopeg IS NOT NULL);
Aturlah agar maintenance kode menjadi lebih mudah
dengan:
 Mendokumentasikan kode dengan komentar.
 Mengembangkan
M
b
k sebuah
b h kaidah
k id h pengkodean
k d
untuk
k
setiap kasus.
 Mengembangkan kaidah penamaan untuk identifier dan objek‐objek lain.
 Meningkatkan kemudahan dalam pembacaan dengan
pemberian inden.
Contoh Kaidah Kode
Memberikan Inden pada Kode
Kategori
Kaidah Pengkodean
Contoh
Pernyataan SQL
Huruf Besar
SELECT, INSERT
DECLARE, BEGIN, IF
Kata‐kata kunci Pl/SQL
Huruf Besar
Tipe data
Huruf Besar
VARCHAR2, BOOLEAN
Identifier dan parameter
Huruf Kecil
v_gaji, pegawai_kursor,
g_gaji, p_nopeg
Tabel dan kolom pada
database
Huruf Kecil
employees, employee_id, department_id
 Contoh ada di depan
4
Download