Pemrogramman Sistem Basis Data TI PDF
Pemrogramman Sistem Basis Data TI PDF
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 1
PENDAHULUAN
01
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang dasar-dasar dari Mampu memahami konsep dasar-dasar
Oracle dari Oracle
3. Lakukan pengecekan, ada berapa user atau Schema di dalam database Anda.
SQL> SELECT USERNAME FROM DBA_USERS;
5. Membuat user
SQL>CREATE USER Nama_User IDENTIFIED BY password
DEFAULT TABLESPACE USERS
QUOTA UNLIMITED ON USERS;
(bisa diatur sesuai keingin kita 50M)
7. Menghapus User
Drop user Nama_User;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
11. Melakukan pengecekan di Schema ada objek database apa saja menggunakan
perintah
SQL> Select object_name, object_type
2 from user_objects;
13. Jika ingin mematikan layanan database dari SERVICE OracleXE 10g, ketikan perintah
berikut :
SQL>conn / as sysdba
SQL> shutdown immediate
15. Melihat semua background process yang dijalankan oleh oracle sebagai bagian dari
arsitektur.
SQL> show sga;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Selanjutnya jalankan script.sql dari prompt SQL dengan menyebutkan secara lengkap folder
tempat file tersebut dan tambahkan tanda @(‘at’) di depannya.
SQL> @C:\SCRIPT.sql
EMPLOYEE_ID FIRST_NAME SALARY
----------- -------------------- ----------
205 Shelley 12000
206 William 8300
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
5. Melihat kinerja dari database dengan cara melihat statistic terhadap kondisi database
OracleXE Anda saat ini. Silakan masuk ke bagian : Home>Administration>Database
Monitor>System Statistics.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Untuk mempermudah dalam praktek kita mengunakan database yang sudah jadi untuk
prose query dll.
Membuat User Baru
SQL> create user sales identified by sales
2 default tablespace users
3 quota unlimited on users;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Kota
ITEM
WILAYAH HD_SALES
Order_Id
Kode_Wilayah Order_Id
Nomor
Nama Wilayah Id_Plg
Kode_Brg
Id_Pegawai
Harga
Tgl_Order
BAGIAN Tgl_Kirim
PEGAWAI
Kode_Bag Sales_Rep_Id
Id_Pegawai
Nama_Bagian Total
Nama_Pegawai
PELANGGAN
Id_Plg
User_Id
Nama_Plg
Email
Telepon_Plg
Tgl_Masuk
Manager_Id
Alamat
Kota
Jabatan
Kode_Pos
Credit_Rating
Sales_Rep_Id
Kode Wilayah
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Latihan Soal
Buat rancangan suatu database untuk aplikasi yang akan anda jadikan suatu project akhir
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrograman Sistem
Basis Data & Sql
Pertemuan 2
Membuat Aplikasi untuk Menampilkan Data Tabel
Menggunakan Halaman Berjenis Report
02
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Membahas tentang cara membuat Mampu memahami cara membuat
aplikasi untuk menampilkan data table aplikasi untuk menampilkan data table
menggunakan halaman berjenis report menggunakan halaman berjenis report
Pendahuluan
Pada modul ini disajikan langkah-langkah yang dibutuhkan untuk membuat aplikasi yang
dapat menampilkan data yang terdapat di dalam sebuah tabel. Sebagaimana yang telah
diuraikan sebelumnya, membuat aplikasi berbasis Web dalam kerangka Oracle Application
Express, sama artinya dengan membangun halaman-halaman Web yang diisi dan
dilengkapi dengan berbagai region, item dan komponen perhitungan, pemrosesan dan
pencabangan. Dalam modul ini, kita akan menambahkan halaman yang berjenis “report” ke
dalam aplikasi yang kita buat. Sebagaimana yang akan disajikan dalam modul ini, Oracle
Application Express sudah menyediakan berbagai template yang dilengkapi dengan
berbagai langkah yang dibutuhkan untuk membuat aplikasi yang dapat menampilkan data
dari sebuah tabel dalam database. Untuk membuat aplikasi ini, praktis tidak satu pun baris
kode program yang kita ketikkan ke dalam antarmuka Oracle Application Express. Selamat
mencoba.
Untuk melakukan editing application dari page yang sudah di buat, klik menu Edit
Application
Maka akan muncul menu Application builder seperti gambar di bawah ini, create page untuk
melakukan edit page tersebut
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Maka akan ditampilkan menu Select a page type
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Maka akan muncul pilihan Sql Report dan Wizard Report, pilih Wizard Report lalu klik Next
Maka secara default untuk page akan diisikan 2, karena kita telah membuat 1 buah page di
awal. Inputkan Page title dan Region Title (misal : Location) dan region template pilih
Reports Region, lalu klik button Next
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Pada menu Tab Option pilih option : Use an Exsiting tab and create a new within the existing
tab set, pada menu Tab set pilih TS1 (page 1)
Isikan new tab label dengan nama report yang akan di buat (misalnya : Report atas table
locations), lalu klik next
Pada menu wizard report, pilih Table / view owner : HR, pilih combo table/view dengan
LOCATION
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Pada menu tersebut akan ditampikan isi dari table Locations pada database HR, di menu
Available Comums sorot fild yang akan kita gunakan, pindahkan ke menu displayed columns
dengan cara mengklik button kanan
Maka isi table Locations sudah dipindahkan ke bagian display columns, lalu klik Next
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Maka akan tampil seperti gambar di bawah ini, pada menu di bawah ini kita bisa mengatur
jumlah rows per page, isikan nilai dari rows per page (misalnya : 15), lalu klik next
Pada menu Wizard report confirmation, klik button next jika sudah tidak ada lagi yang mau
dilakukan perubahan
Page telah sukses di buat, klik Run Page untuk melihat tampilan report yang telah di buat
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Maka akan tampil report di bawah ini, pada tampilan report tersebut terdapat 2 buah page
(Page 1 dan Page Report Atas Tabel Locations)
Untuk melihat isi report page report atas table location, klik page tersebut
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Untuk melakukan editing pada report klik edit page 2
DaftarPustaka
2013 Pemrograman Sistem Basis Data & Sql PusatBahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 2
SQL Plus
02
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam SQL Plus dalam SQL Plus
Untuk menmpilkan isi Buffer SQL *Plus atau menampilkan perintah yang terakhir
diketik, gunakan LIST atau L.
SQL> List
1 SELECT id_pegawai,
2 nama_pegawai,
3 gaji
4 FROM pegawai
5* Where gaji > 10000000
Untuk menjalankan perintah yang ada di buffer ketik RUN atau slash /. Beda Run
dengan slash “/”, kalau dengan slash “/” perintah tidak ditampilkan, sedangkan dengan
RUN perintah dimunculkan dulu baru dieksekusi.
SQL>RUN
SQL>/
Untuk menyimpan perintah yang ada di buffer menjadi file script, menggunakan perintah
SAVE. Misal perintah yang di atas saat ini sedang ada di buffer akan kita simpan
menjadi file info_pegawai.sql
SQL>SAVE info_pegawai.sql
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
C:\oraclexe\app\oracle\product\10.2.0\server\BIN>
Perintah GET untuk mengambil file script dan dimuat ke dalam buffer
SQL> GET C:\SCRIPT\info_pegawai.sql
Jika ingin langsung menjalankan file script dari SQL *Plus, gunakan perintah START
atau gunakan tanda @.
SQL>START C:\Script\info_pegawai.sql
SQL>@ C:\Script\info_pegawai.sql
Untuk menghilangkan perintah dari buffer atau memebersihkan buffer gunakan perintah
CLEAR BUFFER.
SQL>CLEAR BUFFER
SQL> list
SP2-0223: No lines in SQL buffer.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
SQL>SPOOL OFF;
Setting Halaman
SQL>SET PAGESIZE 50
SQL>SELECT id_pegawai,
2 nama_pegawai
3 From pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Setting Baris
Untuk menentukan panjang suatu baris data digunakan perintah SET LINESIZE.
SQL>SET LINESIZE 200
SQL> SELECT * From pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
2 FROM pegawai
3 Where kode_bag IN (31,50)
4 ORDER BY kode_bag, id_pegawai;
8. COMPUTE
Menampilkan jumlah total gaji per kode bagian
SQL>BREAK ON kode_bag SKIP 1
SQL>SET PAGESIZE 100
SQL>BREAK ON kode_bag SKIP 1
SQL>COMPUTE sum OF gaji ON kode_bag
SQL>SELECT kode_bag, id_pegawai, gaji
2 FROM pegawai
3 ORDER BY kode_bag, id_pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
9. Subtitution Variabel
SQL> SELECT id_pegawai, nama_pegawai, kode_bag, gaji
2 FROM pegawai
3 WHERE kode_bag=&bagian;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
10. Verify
Nilai Verify bisa ON dan OFF, jika ON berarti melakuikan verifikasi dan sebaliknya jika
OFF tidak melakukan verifikasi. Secara Default VERIFY bernilai ON.
SQL>SET VERIFY OFF
SQL> SELECT id_pegawai, nama_pegawai, kode_bag, gaji
2 FROM pegawai
3 WHERE nama_pegawai=’&nama’;
Latihan Soal
1. Perintah yang digunakan dalam kelompok Data Manipulation Language adalah
2. User bisa melakukan akses ke beberapa database, pernyataan tersebut benar atau
salah ? Mengapa
3. Untuk berkomunikasi dengan database kita harus menggunakan bahasa yang dipahami
oleh database. Bahasa yang digunakan untuk berkomunikasi dengan database disebut ?
4. Sebutkan tools interface yang dapat digunakan untuk berinteraksi dengan database ?
5. Untuk menampilkan daftar user yang sudah terdaftar di dalam suatu database dilakukan
dengan perintah ?
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrograman Sistem
Basis Data & Sql
Pertemuan 3
Membuat Aplikasi untuk Menampilkan Data Tabel
Menggunakan Halaman “Blank” yang Dilengkapi
dengan Region
03
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Membahas tentang membuat aplikasi Mampu memahami tentang membuat
untuk menampilkan data table aplikasi untuk menampilkan data table
menggunakan halaman blank yang menggunakan halaman blank yang
dilengkapi dengan region dilengkapi dengan region
Membuat Aplikasi dengan Region
Pada modul ini disajikan langkah-langkah yang dibutuhkan untuk membuat aplikasi yang
dapat menampilkan data yang terdapat di dalam sebuah tabel. Berbeda dengan langkah-
langkah yang telah disampaikan pada modul sebelumnya, pada modul ini kita akan
mengembangkan aplikasi dengan menggunakan halaman berjenis “blank”. Kemudian
halaman “blank” tersebut akan kita lengkapi dengan dua buah region berjenis report.
Selamat mencoba.
Saat ini kita masih menggunakan user HR, login dengan user dan password HR
Klik Create
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Pilih menu Create Application, lalu klik Next
Isikan name : (misalnya Membangun Report dengan Region), pilih Schema : HR lalu klik
Next
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Klik Add Page
Klik Next
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Menu berikutnya klik Next
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Klik Create untuk melanjutkan proses berikutnya
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Pada menu page definition>page rendering>region> klik button create
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Isikan Title (misal : Tabel Countries), Region template : Reports Region lalu next
Pada menu di bawah ini, pilih table yang kita inginkan, dalam hal ini kita menggunakan table
Countries, pilih columns dari table countries dan pindahkan ke columns selected
Klik next
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Di dalam menu Region sudah tampil Tabel Countries yang sudah kita buat
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
Pilih Wizard Report lalu klik Next
Karena kita mau menggunakan report tersebut dalam 1 halaman, maka column kita ganti
menjadi 2
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Select table region lalu klik Next
Maka Tabel region yang baru saja kita buat sudah terdapat 2 buah
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
Untuk melihat hasil report yang kita baru saja buat klik Run Page
Hasil report
Daftar Pustaka
2014 Pemrograman Basis data & SQL Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 3
Table
03
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam SQL Plus dalam pembuatan dalam SQL Plus dalam pembuatan
table dan manipulasi table table dan manipulasi table
Table
1. Menggunakan Dictionary Table
SQL>DESC dictionary
Informasi Objek
SQL>COLUMN object_name FORMAT A15
SQL>COLUMN object_type FORMAT A15
SQL>SELECT obeject_name, object_type FROM user_objects;
2. TABEL
Membuat Tabel
SQL> CREATE TABLE product
2 (kode_product VARCHAR2(5),
3 nama_product VARCHAR2(20),
4 harga_jual NUMBER(10),
5 satuan VARCHAR2(10),
6 stock NUMBER(4)
7 );
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
3. Default Option
SQL> CREATE TABLE penjualan
2 (no_order Number(5),
3 tgl_transaksi Date Default sysdate,
4 nama_pembeli Varchar2(15) Default 'Noname',
5 rp_transaksi Number(10) Default 0);
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Modifikasi Kolom
Tambah jumlah karakter pada Kolom
SQL> ALTER TABLE product
2 MODIFY (nama_product varchar2(25));
Mengahapus kolom
SQL> ALTER TABLE product
2 DROP COLUMN keterangan;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Primary Key
SQL> ALTER TABLE PRODUCT
2 ADD CONSTRAINT pk_product PRIMARY KEY (kode_product);
Unique
SQL> ALTER TABLE PRODUCT
2 ADD CONSTRAINT uq_product UNIQUE (nama_product);
Check
SQL> ALTER TABLE pegawai
2 ADD CONSTRAINT ck_gaji CHECK (gaji>=1000000);
Not Null
SQL> ALTER TABLE pegawai
2 Modify userid constraint userid_nn NOT NULL;
Foreign Key
SQL> ALTER TABLE pegawai
2 ADD CONSTRAINT fk_kode_bag FOREIGN KEY (kode_bag)
3 REFERENCES bagian(kode_bag);
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
SYS_C004153 DEPARTMENT C
PK_DEPT DEPARTMENT P
CK_JEN EMPLOYEE C
CK_GAJI_EMP EMPLOYEE C
PK_IDE EMPLOYEE P
UQ_EMAIL_EMP EMPLOYEE U
FK_KODE_DEPT EMPLOYEE R
ERROR at line 1:
ORA-00001: unique constraint (SALES.PK_DEPT) violated
Data kedua tidak masuk karena terdapar Constraint PK_Dept (Primary Key) angka 10 di
Insert sebanyak dua kali.
Ulangi Perintah ini
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Disable
SQL> ALTER TABLE EMPLOYEE
2 DISABLE CONSTRAINT ck_gaji_emp;
Enable
SQL> ALTER TABLE EMPLOYEE
2 ENABLE CONSTRAINT ck_gaji_emp;
Menghapus Constraint
SQL> ALTER TABLE EMPLOYEE
2 DROP CONSTRAINT ck_gaji_emp;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Hal ini terjadi karena pada saat pendefinisian constraint fk_kode_dept tidak diikuti option
ON DELETE CASCADE atau ON DELETE SET NULL.
ON DELETE CASCADE
SQL> Alter table employee
2 ADD CONSTRAINT fk_kode_dept FOREIGN KEY(kode)
3 REFERENCES departement(kode) ON DELETE CASCADE;
9. Truncate Tabel
Perintah untuk menghapus data pada suatu table dan membebaskan space yang
dipakai oleh table. Tuncate merupakan perintah DDL sehingga tidak bisa di
ROLLBACK.
Berbeda dengan perintah DELETE, perintah DELETE hanya menghapus data dan tidak
membesakan space, perintah delete masih bisa di rollback. Jika hanya dilihat dari sisi
datanya, sekilas perintah TRUNCATE dan DELETE tidak ada bedanya.
Table created.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
SQL> BEGIN
2 FOR X IN 1..8 LOOP
3 INSERT INTO COPY_PEG
4 SELECT * FROM COPY_PEG;
5 END LOOP;
6 COMMIT;
7 END;
8 /
TABLE_NAME NUM_ROWS KB
------------------------------ ---------- ----------
COPY_PEG 6400 488
TABLE_NAME NUM_ROWS KB
------------------------------ ---------- ----------
COPY_PEG 0 488
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
Perintah TRUNCATE
SQL> INSERT INTO COPY_PEG SELECT * FROM PEGAWAI;
SQL> BEGIN
2 FOR X IN 1..8 LOOP
3 INSERT INTO COPY_PEG
4 SELECT * FROM COPY_PEG;
5 END LOOP;
6 COMMIT;
7 END;
8 /
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Lihat di RecycleBin
SQL> SHOW RECYCLEBIN;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
Pegawai.txt
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
Latihan Soal
1. Perintah yang digunakan untuk menampilkan data dari tabel pegawai adalah ?
2. Anda menggunakan SQL *Plus dan akan mengeksekusi beberapa fungsi matematika.
Tabel apa yang anda akan gunakan untuk melakukan kalkulasi matematika dari ekspresi
atau nilai yang bukan diambil dari tabel di dalam database ?
3. Anda ingin menulis Query untuk menampilkan data pegawai dengan memilih data
tertentu berdasarkan kriteria. Pada klausa apa kriteria tersebut anda definisikan
4. Anda ingin menampilkan pegawai yang ada di bagian 30 dan namanya diawali oleh
karakter ‘A’, perintah yang digunakan adalah
5. Karakter yang bisa digunakan sebagai wildcard atau pembentuk pola pada operator
LIKE adalah
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
13 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 4
DATA MANIPULATION
LANGUAGE
04
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam SQL Plus dalam pembuatan dalam SQL Plus dalam pembuatan
table dan manipulasi table table dan manipulasi table
Data Manipulation Language
1. Perintah SELECT
Digunakan untuk menampilkan data dari table.
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji
4 FROM pegawai;
2. Operasi Aritmatika
Ekspresi aritmetika dengan operand berupa kolom.
SQL> SELECT nama_pegawai,
2 gaji,
3 gaji+500000
4 FROM pegawai;
Table Dual
SQL> DESC dual;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
SQL> SELECT to_date('20-SEP-08') -1
2 FROM dual;
TO_DATE('
---------
19-SEP-08
Tanggal-Tanggal=Numerik
SQL> SELECT to_date('20-SEP-08') - to_date('15-SEP-08')
2 FROM dual;
TO_DATE('20-SEP-08')-TO_DATE('15-SEP-08')
-----------------------------------------
5
Tanggal+Tanggal=ERROR
SQL> SELECT to_date('20-SEP-08') + to_date('1-SEP-08')
2 FROM dual;
SELECT to_date('20-SEP-08') + to_date('1-SEP-08')
*
ERROR at line 1:
ORA-00975: date + date not allowed
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Jika ingin menambahkan space pada kolom alias, gunakan tanda petik ganda.
SQL> SELECT nama_pegawai,
2 gaji,
3 gaji*0.1 "Kenaikan Gaji",
4 gaji + (gaji*0.1) "TOTAL Gaji"
5 FROM pegawai;
4. Concatination
Digunakan untuk mengkombinasikan beberapa kolom atau kolom dengan suatu text
menjadi satu kolom output.
Contoh tanpa Concatination :
SQL> SELECT nama_pegawai,
2 jabatan
3 FROM pegawai;
Menggunakan Concatination
SQL> SELECT nama_pegawai ||' sebagai '|| jabatan AS " Pegawai dan Jabatan"
2 FROM pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
5. Nilai Null
Kolom yang belum ada nilainya di dalam database.
SQL> SELECT id_pegawai, nama_pegawai, email
2 FROM pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
6. Distinct
Digunakan untuk menghilangkan duplikasi nilai.
Sebulum menggunakan Distinct
SQL> SELECT id_plg FROM hd_sales;
ID_PLG
------
201
202
203
204
205
206
208
208
209
210
211
Menggunakan Distinct
SQL> SELECT DISTINCT(id_plg) FROM hd_sales;
ID_PLG
----------
209
213
205
210
211
201
206
212
7. Where
Digunakan untuk menyeleksi data yang akan ditampilkan, perintah Where ditambahkan
pada perintah SELECT setelah klausa FROM.
SQL> SELECT id_pegawai,
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
2 nama_pegawai,
3 gaji
4 FROM pegawai
5 WHERE id_pegawai=1020;
Operator IN
SQL> SELECT nama_pegawai,
2 gaji
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
3 FROM pegawai
4 WHERE gaji IN (2500000,4000000,5000000);
Operator LIKE
SQL> SELECT nama_pegawai
2 FROM pegawai
3 WHERE nama_pegawai LIKE 'S%';
Operator IS NULL
SQL> SELECT id_pegawai, nama_pegawai, email
2 FROM pegawai
3 WHERE email is Null;
8. Logical Condition
Operator AND
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji,
4 kode_bag
5 FROM pegawai
6 WHERE kode_bag=41 AND gaji >8000000;
Operator OR
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji,
4 kode_bag
5 FROM pegawai
6 WHERE kode_bag=41 OR gaji >8000000;
Operator NOT
SQL> SELECT id_pegawai,
2 nama_pegawai,
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
3 gaji,
4 kode_bag
5 FROM pegawai
6 WHERE NOT(kode_bag=41);
9. Order By
Mengurutkan secara Ascending (Default)
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji
4 FROM pegawai
5 ORDER BY gaji ASC;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
2 nama_pegawai,
3 gaji,
4 pct_komisi,
5 gaji + (pct_komisi*gaji) as "Total"
6 FROM pegawai
7 ORDER BY "Total";
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Angka 3 dan 4 menggambarkan urutan kolom yang ditampilkan 3(kode_bag), 4(gaji).
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
4 tgl_masuk DATE,
5 gaji NUMBER(12))
Correlated Update
SQL> UPDATE copy_pegawai x
2 SET gaji = (SELECT gaji
FROM pegawai WHERE id_pegawai = x.nip);
Kalusa RETURNING
Deklarasi variable dengan nama nilai_rata2 untu menampung hasil AVG(gaji).
SQL>VARIABEL nilai_rata2 NUMBER;
Lakukan UPDATE
SQL>UPDATE pegawai SET gaji = gaji*1.1
2> RETUNING avg(gaji) INTO :nilai_rata2;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
2 FROM pegawai
3 WHERE id_pegawai=1010;
SQL> COMMIT;
Commit complete.
SQL> ROLLBACK;
Rollback complete.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
13 Tim Dosen http://www.mercubuana.ac.id
Perintah Commit di gunakan untuk membuat transaksi menjadi Permanen dan tidak
bisa di ROLLBACK (di kembalikan seperti semula sebelum dilakukan manipulasi)
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
14 Tim Dosen http://www.mercubuana.ac.id
ID_PEGAWAI NAMA_PEGAWAI GAJI
---------- ------------------------- ----------
1011 RIDWAN SANUSI 4200000
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
15 Tim Dosen http://www.mercubuana.ac.id
Latihan Soal
1. Untuk mengkombinasikan beberapa kolom atau kolom dengan suatu text menjadi satu
kolom output menggunakan perintah ?
2. Perintah Save point digunakan untuk ?
3. Perintah yang digunakan untuk menghapus tabel ?
4. Sebutkan logical condition yang bisa kita gunakan dalam proses quary ?
5. Perintah Where digunakan untuk ?
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
16 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 5
SQL FUNCTION
05
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam SQL Function dalam SQL Function
SQL Function
SQL Function di bagi menjadi 2 Bagian.
1. Single Row Function
2. Group Row Function
CONCAT()
CONCAT(x,y) Digunakan untuk menggabungkan karakter x dan y.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
String Initcap Lower Upper
--------- --------- --------- ---------
sATu kaTa Satu Kata satu kata SATU KATA
NAMA_PEGAWAI
-------------------------
AHMAD KOSASIH
INSTR()
INSTR(x,y)Digunakan untuk mencari posisi suatu huruf pada suatu kalimat.
LENGTH()
Digunakan untuk mengembalikan jumlah karakter dari string x.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
SQL> SELECT 'aabbaabbaa' as "STRING",
2 LTRIM('aabbaabbaa','a') as "LTRIM",
3 RTRIM('aabbaabbaa','a') as "RTRIM",
4 TRIM('a' FROM 'aabbaabbaa') as "TRIM"
5 FROM dual;
REPLACE
REPLACE(x,y,z) digunakan untuk mengganti substring y menjadi substring z pada
string x.
SUBSTR()
SUBSTR(x,y [,z]) digunakan untuk menampilkan substring mulai dari posisi y sebanyak
z karakater dari string x.
NAMA_PEGAWAI SUBSTR(NAMA_PEGA
SUBSTR(NAMA_PEGAWAI,
------------------------- ---------------- --------------------
MEUTIA JOVI MAHARANI MEUT I MAH
BUDI HARTADI BUDI DI HA
RULLY SIANIPAR RULL Y SIA
EDWIN ASRUL EDWI DWIN
NOVI SETIAWATI NOVI SETI
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
ARIS MURSITO ARIS IS MU
IRVAN SYAFE'I IRVA AN SY
NAMA_PEGAWAI EMAIL
------------------------- ------------------------
MEUTIA JOVI MAHARANI [email protected]
BUDI HARTADI [email protected]
2. NUMERIC FUNCTION
ABS()
Digunakan untuk mengembalikan nilai Absolut
SQL> SELECT -10 AS "Nilai1", ABS(-10) as "Absolut"
2 FROM dual;
Nilai1 Absolut
---------- ----------
-10 10
CEIL()
CEIL(X) ->Digunakan untuk pembulatan ke atas dari nilai decimal x.
SQL> SELECT CEIL(5.1)
2 FROM dual;
CEIL(5.1)
----------
6
FLOOR()
FLOOR(x) -> Digunakan untuk pembulatan ke bawah dari nilai decimal x.
SQL> SELECT FLOOR(5.1)
2 FROM dual;
FLOOR(5.1)
----------
5
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
MOD()
MOD(x,y) -> Digunakan untuk mencari sisa bagi antara nilai x dengan y.
SQL> SELECT MOD(7,2)
2 FROM dual;
MOD(7,2)
----------
1
ROUND()
ROUND(x [,y]) -> Digunakan untuk pembulatan dari nilai x ke decimal y kebelakang
koma.
SQL> SELECT ROUND(5.71), ROUND(10.65634,2)
2 FROM dual;
ROUND(5.71) ROUND(10.65634,2)
----------- -----------------
6 10.66
TRUNC()
TRUNC(x [,y]) -> Digunakan untuk memotong nilai x menjadi y decimal tanpa dilakukan
pembulatan.
SQL> SELECT TRUNC(5.71), TRUNC(10.65634,2)
2 FROM dual;
TRUNC(5.71) TRUNC(10.65634,2)
----------- -----------------
5 10.65
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
3. DATE FUNCTION
SYSDATE
---------
05-OCT-12
CURRENT_TIMESTAMP
-----------------------------------
05-OCT-12 04.14.45.131000 PM +07:00
MONTHS_BETWEEN
MONTHS_BETWEEN(x,y) -> Digunakan untuk mencari jumlah bulan antara tanggal y
dan tanggal x.
SQL> SELECT months_between('09-NOV-09','09-OCT-08')
2 FROM dual;
Fungsi-Fungsi Bulan lainnya
- ADD_MONTHS
- LAST_DAY
- NEXT_DAY
- ROUND
- TRUNC
4. GENERAL FUNCTION
NVL()
Digunakan untuk menangani nilai null.
SQL> SELECT nama_pegawai,
2 gaji,
3 pct_komisi,
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
4 gaji + (pct_komisi*gaji) as "Total"
5 FROM pegawai;
NULLIF(x,y)
Digunakan untuk membandingkan nilai x dan y. Jika nilai x sama dengan nilai y maka
akan menghasilkan nilai Null.
KODE_BRG X Y NULLIF(x,y)
---------- ---------- ---------- -----------
10011 12 18 12
10012 23 29 23
10013 20 27 20
CASE
Digunakan untuk percabangan seperti IF-THEN-ELSE
SQL> SELECT nama_pegawai, kode_bag, gaji as "Gaji",
2 CASE kode_bag WHEN 31 THEN gaji*1.1
3 WHEN 41 THEN gaji*1.15
4 ELSE gaji
5 END as "Gaji Baru"
6 FROM pegawai;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
GROUP FUNCTION
GROUP FUNCTION akan memproses banyak data dan memberikan satu hasil. GROUP
FUNCTION sering disebut juga AGGREGATE FUNCTION.
1. AVG
AVG(x) di gunakan untuk menghitung nilai rata-rata dari kelompok data x.
SQL> SELECT AVG(harga_jual) AS "Rata2 Harga Jual"
2 FROM barang;
2. COUNT
COUNT(x) digunakan untuk menghitung jumlah data dari kelompok data x.
COUNT(ROWID)
------------
24
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
Max(x) Digunakan untuk mencari nilai paling tinggi dari kelompok data x dan MIN(x)
digunakan untuk mencari nilai yang paling rendah dari kelompok data x.
4. SUM
SUM(x) digunakan untuk menghitung jumlah total dari data-data yang ada di kelompok
data x.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
3 FROM pegawai
4 GROUP BY kode_bag, jabatan
5 ORDER BY kode_bag;
Sebagai contoh, ingin ditampilkan bagian yang rata-rata gaji pegawainya di atas 7000000.
SQL> SELECT kode_bag as "Bagian",
2 AVG(gaji) as "Rata2"
3 FROM pegawai
4 HAVING AVG(gaji)>7000000
5 GROUP BY kode_bag;
Sebenarnya klausa WHERE tetap bisa digunakan bersama dengan HAVING, tetapi klausa
WHERE tetap digunakan untuk non-group function.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
Sebagai contoh, akan menampilkan bagian yang rata-rata gaji pegawainya di atas 4000000
tetapi pegawai yang jabatannya VICE President (VP) tidak ikut di kalkulasi.
SQL> SELECT kode_bag as "Bagian",
2 AVG(gaji) as "Rata2"
3 FROM pegawai
4 WHERE jabatan NOT LIKE 'VP%'
5 GROUP BY kode_bag
6 HAVING AVG(gaji)>4000000
7 ORDER BY kode_bag;
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 6
SUB QUERY
06
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam sub query dalam sub query
SUB QUERY
1. Pengertian SubQuery
Subquery merupakan “Query di dalam query” atau perintah SELECT yang berapa
dalam perintah SELECT lainnya.
Struktur Penulisan Subquery :
SELECT kolom…
FROM table
WHERE kondisi (SELECT kolom
FROM table
WHERE kondisi);
NAMA_PEGAWAI GAJI
------------------------- ----------
ADRIAN 4000000
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Note :
- Subquery ditulis dalam tanda kurung.
- Letakkan Subquery di sisi kanan tanda pembanding
- Gunakan tanda pembanding tunggal untuk single-row subquery dan tanda
pembanding jamak untuk multi-row subquery
Jenis-jenis SubQuery
- Single-row subquery
- Multi-row subquery
- Multi-column subquery
- Corelated subquery
- Inline View
Contoh : Tampilkan pegawai yang satu bagian dengan ‘ASFIANTI’ dan gajinya lebih
kecil dari pegawai ‘RIDWAN SANUSI’.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
- Group Function pada Subquery
Pada Subquery bisa menggunakan group function seperti AVG, MAX, MIN.
Contoh : Tampilkan pegawai yang gajinya berada di atas rata-rata.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
3. Multi-Row SubQuery
Multi-row subquery adalah subquery yang menghasilkan lebih dari satu row. Tanda
pembanding yang digunakan pada multi-row adalah tanda pembanding jamak yaitu IN,
ANY, dan ALL.
SQL> SELECT id_pegawai, nama_pegawai, gaji
2 FROM pegawai
3 WHERE gaji = (SELECT min(gaji)
4 FROM pegawai
5 GROUP BY kode_bag);
Perintah di atas error, kenapa? Karena hasil dari subquery-nya lebih dari satu data.
Coba kita cek :
SQL> SELECT min(gaji)
2 FROM pegawai
3 GROUP BY kode_bag;
MIN(GAJI)
----------
2000000
4000000
11500000
1400000
10500000
Unuk mengatasi hal tersebut, kita harus mengganti tanda pembanding dengan
pembanding jamak seperti IN.
- Operator IN
Operator IN merupakan tanda pembanding jamak, kita bisa membuat sekumpulan nilai
atau ekspresi sebagai pembanding.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Dari contoh sebelumnya bermaksud mencari pegawai yang gajinya sama dengan
minimal gaji yang ada di setiap bagian. Jika menggunakan operator IN menjadi sebagai
berikut.
- Operator ANY
Operator ANY digunakan untuk membandingkan data yang dicari dengan sekumpulan
data yang ada. Pada saat digunakan operator ANY harus dipasangkan dengan salah
satu dari operator <, >, atau = dengan ketentuan sebagai berikut :
o = ANY ~> mempunya karakteristik sama dengan Operator IN, yaitu semua data
dibandingkan dengan elemen dari hasil subquery.
o <ANY ~> Menampilkan data di out query yang lainnya lebih kecil dari data yang
paling besar dari hasil subquery
o >ANY ~> Menampilkan data di out query yang lainnya lebih besar dari data yang
paling kecil dari hasil subquery
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
SQL> SELECT id_pegawai
2 nama_pegawai,
3 gaji,
4 kode_bag
5 FROM pegawai
6 WHERE gaji >ANY (SELECT gaji
7 FROM pegawai
8 WHERE kode_bag=31);
- Operator ALL
Digunakan untuk membandingkan data yang dicari dengan sekumpulan data yang
ada. Pada saat digunakan operator ALL. Harus dipasangkan dengan salah satu dari
operator < dan > dengan ketentuan sebagai berikut :
o <ALL ~> Menampilkan data di out query yang nilainya lebih kecil dari data yang
paling kecil dari hasil subquery.
o >ALL ~> Menampilkan data di out query yang nilainya lebih besar dari data yang
paling besar dari hasil subquery.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
8 WHERE kode_bag=31);
5. Correlated SubQuery
Pada Correlated subquery, outer query akan diproses lebih dulu kemudian hasilnya
akan dijadikan rujukan untuk memproses query.
Struktur perintah Correlated subquery :
SELECT kolom1, kolom2 …
FROM table table_alias
WHERE kondisi (SELECT kolom1)
FROM table_alias
WHERE kolom=table_alias.kolom);
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Contoh kasus sama seperti Multi-Column subquery diselesaikan dengan Correlated
subquery.
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji,
4 kode_bag
5 FROM pegawai p
6 WHERE gaji = (SELECT min(gaji)
7 FROM pegawai
8 WHERE kode_bag=p.kode_bag);
Contoh lain, perintah menampilkan pegawai yang gajinya di bawah rata-rata perbagian.
SQL> SET PAGESIZE 20
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 gaji,
4 kode_bag
5 FROM pegawai p
6 WHERE gaji < (SELECT avg(gaji)
7 FROM pegawai
8 WHERE kode_bag=p.kode_bag)
9 ORDER BY kode_bag;
Operator EXISTS
Operator Exists digunakan untuk memeriksa apakah suatu subqery menghasilkan data
atau tidak. Jika suatu subquery menghasikan data, operator EXISTS akan
mengembalikan nilai TRUE sebaliknya akan mengembalikan nilai FALSE.
Contoh penggunaan EXISTS misalnya kita ingin memeriksa mana saja pegawai yang
mempunyai bawahan, yaitu dengan memeriksa apakah id_pegawainya ada tercatat di
kolom manager_id.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
Sebaliknya jika ingin menampilkan pegawai yg tidak punya bawahan gunakan NOT
EXISTS
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 7
INDEX DAN VIEW
07
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam index dan view dalam index dan view
INDEX
Index adalah Objek database yang berfungsi untuk mempercepat pencarian data.
Secara umum, kita harus menggunakan index untuk menampilkan sebagian kecil data dari
jumlah yang sangat banyak pada suatu table.
Di Oracle terdapat 2 jenis Index berdasarkan struktur penyimpanannya
1. B-Tree Index – digunakan untuk membuat index berdasarkan kolom yang unique untuk
setiap baris datanya seperti id_pegawai.
2. Bitmap Index – digunakan untuk kolom tingkat keragamannya rendah.
Buatlah index berdasarkan kolom yang sering digunakan sebagai dasar pencarian.
Misal kita sering melakukan query pencarian data pegawai berdasarkan nama pegawai
selain dengan id pegawai, maka sebaiknya kita membuat index berdasarkan kolom
nama_pegawai pada table pegawai.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Membuat bitmap index berdasarkan kolom credit_rating pada table pelanggan.
SQL> CREATE BITMAP INDEX bi_credit_rating
2 ON pelanggan(credit_rating);
Informasi tentang index bisa dilihat dari dictionary user_ind_coloumn atau user_indexes.
SQL> SELECT index_name, table_name
2 FROM user_indexes
3 WHERE TABLE_NAME IN('PEGAWAI','PELANGGAN');
Menghapus Index
Untuk menghapus index gunakan perintah DROP INDEX.
SQL> DROP INDEX NAMA_PEG_IDX;
VIEW
View merupakan pendefinisian query yang hanya mengakses ke satu atau beberapa table.
Lebih sederhanya, view bisa saja disebut sebagai perintah SELECT yang diberi nama.
- Agar memudahkan kita setiap kali ingin melakukan query tersebut, sebaiknya kita
buatkan view. View dibuat dengan perintah CREATE VIEW. Cara membuat VIEW query
di atas adalah sebagai berikut :
SQL> CREATE VIEW v_peg_bag
2 AS
3 SELECT id_pegawai, nama_pegawai, nama_bag
4 FROM pegawai, bagian
5 WHERE pegawai.kode_bag=bagian.kode_bag;
View created.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
- Selanjutnya kita tinggal melakukan query ke view v_peg_bag.
SQL> SELECT * FROM v_peg_bag;
Ket :
- OR REPLACE berarti jika nama view sudah perna ada akan ditimpa.
- FORCE berarti view bisa dibuat walaupun table yang disebutkan dalam subquery belum
dibuat.
- NO FORCE berarti view tidak bisa dibuat jika tabel yang disebutkan dalam subquery
belum dibuat.
Berdasarkan kompeksitas subquery, view dibagi dua yaitu simple-view dan complex-view.
Simple-View, view yang melakukan query dalam satu table dan tidak menggunakan
group function.
Complex-view, view yang subquerynya terdiri dari dua table atau lebih serta
menggunakan DISTINCT atau GROUP BY.
Membuat Simple-View
Simple-view adalah view yang berisi query yang hanya mengakses ke satu table dan tidak
melibatkan group function atau expresi komplreks.
SQL> CREATE OR REPLACE VIEW v_brg_murah
2 AS
3 SELECT kode_brg, nama_brg, harga_jual
4 FROM barang
5 WHERE harga_jual <300000;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
7 FROM pegawai
8 WHERE kode_bag=31;
Setelah membuat view, kita bisa melakukan query ke view tersebut sebagaimana kita
melakukan query terhadap table.
SQL> SELECT * from v_brg_murah where harga_jual<200000;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
5. SQL> INSERT INTO v_brg_murah
2 VALUES(70000,'MONITOR SAMSUNG 15 inch', 8750000);
Ternya bisa dilakukan proses INSERT, tetapi jika di periksa data tersebut tidak ada
di view maupun di table. Karena kita memberi CONSTRAIN pada v_brg_murah yaitu
harga di bawah 300.000.
SQL> SELECT * from v_brg_murah
2 WHERE kode_brg=70000;
no rows selected
Coba sekarang masukkan data barang yang harganya lebih besar dari 300.000
SQL> INSERT INTO v_brg_murah
2 VALUES (90000,'EXTERNAL DISK',500000);
INSERT INTO v_brg_murah
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause
Violation
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
4 nama_pegawai,
5 kode_bag,
6 gaji
7 FROM pegawai
8 WHERE kode_bag=31
9 WITH READ ONLY CONSTRAINT ck_ready_only_peg31;
View yang sudah di create dengan Constrain READ ONLY maka view tersebut tidak bisa di
insert, update dan delete.
Menghapus View
Untuk menghapus view digunakan perintah DROP VIEW. Contoh menghapus view
v_peg31.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Soal Quis
1. Perintah yang digunakan dalam kelompok Data Manipulation Language adalah
2. User bisa melakukan akses ke beberapa database, pernyataan tersebut benar atau
salah ? Mengapa
3. Untuk berkomunikasi dengan database kita harus menggunakan bahasa yang dipahami
oleh database. Bahasa yang digunakan untuk berkomunikasi dengan database disebut ?
4. Sebutkan tools interface yang dapat digunakan untuk berinteraksi dengan database ?
5. Untuk menampilkan daftar user yang sudah terdaftar di dalam suatu database dilakukan
dengan perintah ?
6. Perintah yang digunakan untuk menampilkan data dari tabel pegawai adalah ?
7. Anda menggunakan SQL *Plus dan akan mengeksekusi beberapa fungsi matematika.
Tabel apa yang anda akan gunakan untuk melakukan kalkulasi matematika dari ekspresi
atau nilai yang bukan diambil dari tabel di dalam database ?
8. Anda ingin menulis Query untuk menampilkan data pegawai dengan memilih data
tertentu berdasarkan kriteria. Pada klausa apa kriteria tersebut anda definisikan
9. Anda ingin menampilkan pegawai yang ada di bagian 30 dan namanya diawali oleh
karakter ‘A’, perintah yang digunakan adalah
10. Karakter yang bisa digunakan sebagai wildcard atau pembentuk pola pada operator
LIKE adalah
11. Untuk mengkombinasikan beberapa kolom atau kolom dengan suatu text menjadi satu
kolom output menggunakan perintah ?
12. Perintah Save point digunakan untuk ?
13. Perintah yang digunakan untuk menghapus tabel ?
14. Sebutkan logical condition yang bisa kita gunakan dalam proses quary ?
15. Perintah Where digunakan untuk ?
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 8
JOIN
08
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam join dalam join
JOIN
1. Pengertian JOIN
Selama ini, dengan peritah SELECT yang kita lakukan hanya menampilkan data
darin satu table, padahal dalam kondisi sebenarnya kerap kali kita harus menampilkan
data dari beberapa table dalam satu perintah SELECT agar data yang ditampilkan
lebih informative.
Jika ingin menampilkan informasi di mana data yang diperlukan harus diambil dari
beberapa table maka kita harus melakukan JOIN. Join antara dua table memerlukan
kondisi join yang digunakan untuk menghubungakan data dari satu table ke data yang
ada di table lain. Kondisi join didefinisikan pada klausa WHERE.
Contoh : Kita bisa memperoleh informasi tentang order_id, tanggal_order, total Order,
dan id_ pelanggan dengan perintah berikut :
Dari data diatas hanya di tampilkan ID_PLG, nama pelanggannya tidak ditampilkan
karena nama pelanggan hanya ada di table pelanggan sehinggan data di atas kurang
informative. Untuk menampilkan nama pelanggan kita perlu melakukan JOIN antara
table hd_sales dengan table pelanggan.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
3 pelanggan.nama_plg,
4 hd_sales.total
5 FROM hd_sales, pelanggan
6 WHERE hd_sales.id_plg = pelanggan.id_plg;
Dengan Query diatas, maka nama pelanggan dari table pelanggan bisa di tampilkan.
Beberapa hal yang harus diperhatikan dalam melakukan join table adalah :
Pada klausa SELECT, untuk setiap kolom yang akan ditampilkan sebaiknya diawali
dengan nama table asal kolom dengan dibatasi oleh tanda titik (.).
Pada klausa WHERE yang digunakan untuk mendefinisikan kondisi nama table
harus disebutkan sebelum nama kolom penghubung, jika tidak akan menyebabkan
error.
2. Kolom Alias
Untuk mempersingkat penulisan, biasanya nama table dibuat ALIAS yang lebih
pendek dari nama table aslinya. Nama alias suatu table didefinisikan pada klausa
FROM setelah nama table aslinya. Misalkan table hd_sales akan dialiaskan sebagai h
dan table pelanggan akan dialisakan sebagai p maka pendefinisian alias di klausa
FROM adalah sebagai berikut :
3. Cartesian Product
Cartesian Product adalah suatu kondisi jika suatu join tanpa ada kondisi join, di mana
hasil join merupakan kombinasi antara data yang ada di kedua table. Jumlah data hasil
Cartesian Product adalah hasil perkalian antara jumlah data di table pertama dengan
jumlah data di table kedua.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
5 FROM hd_sales h, pelanggan p
Sedangkan berdasarkan dari data yang dihasilkan jenis join ada tiga, yaitu :
Inner Join -> Join yang menghasikkan data yang bersesuain atau data yang
memenuhi kondisi join saja.
Outer Join -> Join yang hasilnya merupakan gabungan data yang bersesuaian atau
data yang memenuhi kondisi join dan data yang tidak punya pasangan di table
lawannya.
o Right Join
o Left Join
Self Join -> Join yang dihasilkan yang dilakukan antar kolom dalam satu table.
Untuk mengelompokan seorang pegawai masuk grade mana kita tinggal melakukan join
antar kolom gaji pada table pegawai menggunakan pembanding BETWEEN ke kolom
bts_bawah dan bts_atas pada table grade.
Perintah joinnya adalah sebagai berikut :
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
NAMA_PEGAWAI GAJI KODE_GRADE
------------------------- ---------- ----------
HERU KUTANTO 1400000 A
ASWIR MATONDANG 1500000 A
AMAURA 1950000 A
DHILA LESTARI 1950000 A
6. Outer Join
Outer Join akan menghasilkan data yang memenuhi kondisi join baik yang ada
pasangannya ataupun tidak ada pasangannya di table lawan joinnya.
Jika ingin menampilkan semua data yang ada di table yang sisi kiri baik yang ada
pasangannya ataupun tidak Maka join ini di sebut LEFT OUTER JOIN sebaliknya
disebut RIGHT OUTER JOIN.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Right Outer Join
Contoh untuk Right Outer join kita akan menampilkan semua bagian baik yang sudah
ada pegawainya maupun yang belum ada pegawainya. Perhatikan letak tanda (+)
dan posisi table pada kondisi join.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
10 FROM pegawai p, bagian b
11 WHERE p.kode_bag (+) = b.kode_bag;
7. Self Join
Self Join merupakan join atarkolom dalam satu table. Join dengan nama table yang
sama sebenarnya tidak bisa dilakukan. Self Join dilakukan dengan menggunakan table
alias. Jadi satu table dibuat menjadi dua buah table alias sehinggan seolah-olah join
dilakukan dari dua table yang berbeda.
Contoh join kita ambil dari table pegawai, yaitu join antar kolom manger_id dengan
kolom id_pegawai. Kedua kolom tersebut membunyai hubungan karena nilai kolom
manager id sebenernya menurpakan id_pegawai yang sudah punya bawahan.
Join yang sudah di bahas sebelumnya merupakan join dari ORACLE. Selain join
tersebut, Oracle juga mengadopsi sytax join dari ANSI SQL/92 yang mulai dipakai oleh
Oracle sejak Oracle 9i. Join dari Oracle maupun dari ANSI SQL akan menghasilkan data
yang sama hanya berbeda dalam cara penulisan dan struktur perintanya.
1. Natural Join
Naral Join bisa dilakukan antardua table dengan ketentuan :
Ada Kolom yang sama pada kedua kolom
Kolom yang namanya sama hanya ada satu kolom
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Data yang muncul adalah data yang saling bersesuaian di antara dua table atau
inner Join.
Contoh :
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 nama_bag
4 FROM pegawai NATURAL JOIN bagian;
2. Klausa Using
Klausa Using merupakan pengembangan dari Natural Join, dengan ketentuan sebagai
berikut :
Jika ada lebih dari satu kolom yang namanya sama pada tabel yang akan di join.
Klausa USING digunakan untuk menentukan nama kolom yang akan digunakan
sebagai kondisi join
Pada nama kolom yang digunakan pada klausa USING tidak boleh diawalai dengan
nama table.
Contoh :
SQL> SELECT id_pegawai,
2 nama_pegawai,
3 nama_bag
4 FROM pegawai USING JOIN bagian;
3. Kalusa ON
Klausa ON digunakan untuk melakukan join pada dua table walaupun pada kedua table
tersebut tidak ada kolom yang namanya sama untuk dijadikan sebagai kondisi join
tetapi data pada kolom-kolom tersebut bersesuaian sehingga memungkinkan untuk
dilakukan join.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
6 ORDER BY p.id_pegawai;
4. Cross Join
Cros Join akan menghasilkan cross product dari kedua table. Jumlah data yang
dihasilkan merupakan perkalian jumlah data table pertama dengan table kedua. Ini
sama seperti Cartesian Product.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
3 h.total,
4 b.kode_brg,
5 b.nama_brg,
6 b.harga_jual,
7 i.jlh
8 FROM pelanggan p,
9 hd_sales h,
10 item i,
11 barang b
12 WHERE p.id_plg=h.id_plg
13 AND h.order_id = i.order_id
14 AND b.kode_brg = i.kode_brg
15 ORDER BY p.nama_plg, b.kode_brg;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
RIGHT OUTER JOIN
SQL> SELECT p.id_pegawai,
2 p.nama_pegawai,
3 b.nama_bag
4 FROM pegawai p RIGHT OUTER JOIN bagian b
5 ON (p.kode_bag = b.kode_bag)
6 ORDER BY b.nama_bag;
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 9
PL / SQL
09
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
dalam PL / SQL dalam PL / SQL
PL / SQL
PL/SQL adalah kepanjangan dari PROCEDURAL LANGUAGE/STRUCTURE
QUERY LANGUAGE yang mempunyai definisi : suatu blok yang berisi skrip-skrip bahasa
procedural.
PL/SQL mewakili perluasan bahasa procedural ke SQL, bahasa akses data standar
dari oracle corporation untuk relational database. PL/SQL meyediakan satu struktur block
untuk menjalankan suatu kode. Maintanance dari kode yang dibuat lebih mudah dengan
mendesain struktur yang baik. Selain itu PL/SQL menyediakan konstruksi procedural
seperti:
Variable, konstanta, dan type data
Mangatur struktur seperti pernyataan kondisional dan perulangan
Menggunakan kembali unit program setelah ditulis dan dijalankan di berbagai waktu
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
PL / SQL merupakan “bahasa Oracle “ yang didesain khusus untuk berkomunikasi
dengan objek database Oracle.
PL / SQL adalah bahasa procedural yang mudah untuk dipahami dan powerfull
Kode-kode dari PL/SQL ini tersimpam permanen di disk, yaitu pada tablespace.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
EXCEPTION(optional)
– Berisi perintah error yang mungkin terjadi
END;(wajib ditulis)
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Agar dapat mengeluarkan pernyataan maka serveroutput harus di on kan. Untuk
melihat status dari serveroutput adalah show serveroutput;
Untuk mengaktifkan adalah set serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);
END;
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’
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
3 dbms_output.put_line('Hello world!!!, you know me??');
4 END;
5 /
Untuk menjalankannya cukup memberikan perintah SQL>/
Hasil yang diperoleh:
Hello world!!!, you know me???
Kegunaan Variabel
Sebagai Tempat Penyimpanan Data Sementara
Dapat dipakai berulang kali
Memanipulasi Nilai Yang Telah Tersimpan Dalam Database
Tipe Data PL/SQL
IDENTIFIERS
Dalam membuat sebuah variabel, terlebih dahulu kita tentukan Identifier nya, dimana
salah satu kegunaan Identifier adalah Sebagai Nama dari suatu variabel.
Dalam memberikan penamaan variabel, terdapat aturan yang harus kita patuhi yaitu:
Tidak diawali dengan angka dan harus diawali dengan huruf
Dapat memuat Angka
Dapat memuat karakter spesial seperti _ , $ , dan #
Terbatas hanya 30 karakter
Bukan Kata kunci (int, varchar, table, trigger) dalam Oracle Server
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Dalam Mendeklarasi dan Menginisialisai Variabel, Perhatikan Hal-hal berikut :
1. Patuhi Aturan Penamaan Variabel
2. Berikan Nama Variabel Yang sesuai dengan fungsinya
3. Inisialisasi Variabel dengan NOT NULL jika variabel tersebut harus mengandung
sebuah nilai, dan gunakan CONSTANT jika variabel tersebut membutuhkan nilai
yang permanen dan tidak dapat dirubah
4. Inisialisai variabel dengan asignment Operator (:=) atau dengan DEFAULT
o Name VARCHAR(20):=‘Fern’ atau
o Name NUMBER DEFAULT ‘Fern’
5. Deklarasikan satu Variabel hanya untuk satu baris dan 2 variabel untuk 2 baris yang
berguna dalam hal maintenance dan readability
6. Hindari penggunaan Nama Kolom Pada suatu Tabel dalam penamaan Variabel
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Nb: Karakter q pada q’!Father’s day!’ digunakan sebagai quote yang berguna agar karakter
singe quote ( ‘ ) pada kalimat tersebut dapat dipakai dan karater !, [ digunakan sebagai
pembatas dimana qoute dimulai dan berakhir.
3. Memberi komentar
SQL> DECLARE
2 BEGIN
3 /*Mengeluarkan Pernyataan*/
4 DBMS_OUTPUT.PUT_LINE('Coba Komentar...');
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
5 END;
6 /
Coba Komentar...
5. Membuat sebuah variable baru yang bernama name dan bertipe varchar2 yang berisikan
data first_name + last_name dari tabel employees yang memiliki id = 100.
SET SERVEROUTPUT ON
DECLARE
name VARCHAR2(50);
BEGIN
SELECT nama_pegawai INTO name
FROM pegawai
WHERE id_pegawai = 1024;
DBMS_OUTPUT.PUT_LINE(‘Name of the
Employee is ‘ || name);
END;
Hasilnya adalah :
Name of the Employee is Steven King
PL/SQL procedure successfully completed.
6. Menampilkan data yang ada di dalam table yang di simpan ke dalam variabel kemudian
di tampilkan ke layar.
SET SERVEROUTPUT ON
DECLARE
name VARCHAR2(122);
kar_id NUMBER := 1024;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
bag_name VARCHAR2(13);
sal NUMBER;
BEGIN
SELECT nama_pegawai, gaji, nama_bag INTO Name, Sal, bag_name
FROM pegawai a join bagian b using(kode_bag)
WHERE id_pegawai = kar_id;
DBMS_OUTPUT.PUT_LINE('Nama= '||' '||name);
DBMS_OUTPUT.PUT_LINE('Salary = '||' '||Sal);
DBMS_OUTPUT.PUT_LINE('Name Department= '||' '||bag_name);
END;
Hasilnya :
Nama= Weiss
Salary = 8000
Name Department= Shipping
BOOLEAN VARIABLE
BOOLEAN merupakan tipe variabel yang hanya memiliki nilai TRUE, FALSE, dan
NULL.
Contoh :
DECLARE
tipe1 BOOLEAN := TRUE;
tipe2 BOOLEAN := (1=2); // benilai FALSE
tipe3 BOOLEAN := ('a'='b'); //bernilai False
tipe4 BOOLEAN := NULL; //bernilai NULL
type5 BOOLEAN := NOT NULL; //bernilai NOT NULL
BIND VARIABLE
Variabel BIND dibuat di dalam Environment dan juga disebut dengan HOST
Variabel, dalam bahasa prosedural Seperti Bahasa C, BIND variabel disebut dengan global
variabel. BIND variables diawali dengan kata kunci VARIABLE dan direferensikan dengan
tanda titik dua ( : ). Bind Variables dapat digunakan pada SQL statement maupun PL/SQL
Block.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Contoh :
VARIABLE emp_salary NUMBER
BEGIN
SELECT gaji INTO :emp_salary
FROM pegawai WHERE id_pegawai = 1024;
END;
/
PRINT emp_salary
Nb: Command PRINT digunakan untuk menampikan value dari BIND VARIABLES
Di Dalam iSQL *PLUS juga terdapat COMMAND yang dapat menampilkan value dari
BIND Variable secara otomatis, yaitu SET AUTOPRINT ON
Contoh :
SET AUTOPRINT ON
VARIABLE emp_salary NUMBER
BEGIN
SELECT salary INTO : emp_salary
FROM employees WHERE employee_id = 100;
END;
/
BIND Variabel yang telah kita buat tadi juga dapat dipakai pada SQL Statement
Contoh :
SUBSTITUTION VARIABLE
Substitution Variables atau Variabel Pengganti merupakan variabel yang digunakan
untuk memerintahkan user agar memasukkan nilai yang diinginkannya sendiri. Subtitution
Variabel diawali dengan tanda ampersand (&).
Contoh :
SET AUTOPRINT ON
VARIABLE emp_salary NUMBER
DECLARE
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
emp_no NUMBER(6):=&empno;
BEGIN
SELECT gaji INTO :emp_salary
FROM pegawai WHERE id_pegawai = emp_no;
END;
/
Di Dalam SQL *PLUS juga terdapat COMMAND yang dapat memverifikasi nilai apa yang
dimasukkan oleh user yaitu dengan menggunakan Command SET VERIFY ON
Contoh :
SET AUTOPRINT ON
SET VERIFY ON
VARIABLE emp_salary NUMBER
DECLARE
emp_no NUMBER(6):=&empno;
BEGIN
SELECT salary INTO :emp_salary
FROM employees WHERE employee_id = emp_no;
END;
/
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
Attribut %TYPE
%TYPE adalah attribut yang digunakan untuk mendeklarasikan sebuah variable
yang sesuai dengan:
Definisi sebuah kolom database
Deklarasi variable lain
Contoh :
emp_name employees.last_name%TYPE;
balance NUMBER(7,2);
min_balance balance%TYPE := 1000;
Pada contoh diatas, kita membuat 3 buah variabel yaitu Variabel emp_name, balance, dan
min_balance dimana Variabel emp_name memiliki tipe yang sama dengan tipe kolom
last_name pada tabel employees, lalu Variabel balance bertipe Number, Dan Variabel
min_balance yang bertipe sama dengan Variabel balance yang memiliki tipe NUMBER
Attribut %ROWTYPE
%ROWTYPE digunakan untuk mendeklarasikan sebuah variabel yang sesuai
dengan tipe data sejumlah kolom pada tabel atau view di database. Beda halnya dengan
%TYPE yang hanya bisa mereferensikan satu tipe kolom atau satu variabel saja.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
13 Tim Dosen http://www.mercubuana.ac.id
Contoh :
SET SERVEROUTPUT ON
DECLARE
Col_Emp pegawai%ROWTYPE;
BEGIN
SELECT * INTO Col_Emp
FROM pegawai
WHERE Employee_id = 1024;
DBMS_OUTPUT.PUT_LINE(Col_Emp.nama_pegawai);
DBMS_OUTPUT.PUT_LINE(Col_Emp.jabatan);
DBMS_OUTPUT.PUT_LINE(Col_Emp.gaji);
END;
Pada Contoh diatas kita membuat sebuah variabel Col_Emp yang mempunyai semua tipe
data pada kolom tabel employees.
Nb : %ROWTYPE dan %TYPE sama-sama hanya bisa mengambil satu baris data
Soal Praktikum
1. Buatlah sebuah blok PL/SQL yang dapat menampilkan informasi berupa teks :
“BELAJAR” dan “PEMROGRAMAN ORACLE PL/SQL” dengan cara :
– Tanpa mendefinisikan variabel, dan
– Dengan mendefiniskan variabel-variabel yang dibutuhkan.
2. Buatlah sebuah blok PL/SQL sederhana sehingga pada layar SQL*Plus akan
menampilkan teks berikut : “/* Ini adalah komentar program*/”
3. Perbaiki blok PL/SQL yang mengalami error dibawah ini :
Declare
X CONSTANT INTEGER := 200 ;
BEGIN
X := 100 ;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(X) );
END ;
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
14 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 10
Percabangan dan Perulangan
Pada PL / SQL
10
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
percabangan dan perulangan pada PL percabangan dan perulangan pada PL
/ SQL / SQL
PL / SQL
Percabangan
Percabangan adalah suatu kontrol untuk pengecekan yang dilakukan sebelum
statemen-statemen dalam sebuah blok PL/SQL dieksekusi.Statement yang dapat digunakan
untuk percabangan adalah IF dan CASE, dengan syntax sebagai berikut :
IF-ELSE Statement
Sama seperti bahasa pemrograman yang lain, PL/SQLjuga menyediakan Statement IF-
ELSE.
Syntax :
IF condition THEN
statements;
[ELSIF condition THEN
statements;]
[ELSE
statements;]
END IF;
Contoh :
DECLARE
noBulan integer;
namaBulan varchar2(9);
BEGIN
noBulan := 3;
IF noBulan = 1 then
namaBulan := ‘January’;
ELSIF noBulan = 2 then
namaBulan := ‘Februari’;
ELSIF noBulan = 3 then
namaBulan := ‘Maret’;
ELSIF noBulan = 4 then
namaBulan := ‘April’;
ELSIF noBulan = 5 then
namaBulan := ‘Mei’;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
ELSIF noBulan = 6 then
namaBulan := ‘Juni’;
ELSIF noBulan = 7 then
namaBulan := ‘Juli’;
ELSIF noBulan = 8 then
namaBulan := ‘Agustus’;
ELSIF noBulan = 9 then
namaBulan := ‘September’;
ELSIF noBulan = 10 then
namaBulan := ‘Oktober’;
ELSIF noBulan = 11 then
namaBulan := ‘November’;
ELSIF noBulan = 12 then
namaBulan := ‘Desember’;
ELSE
namaBulan := ‘’;
END IF;
DBMS_OUTPUT.PUT_LINE(NAMABULAN);
END;
/
SET SERVEROUTPUT ON
SET VERIFY OFF
DECLARE
ANGKA NUMBER :=&n;
BEGIN
IF Angka > 10 THEN
DBMS_OUTPUT.PUT_LINE('ANGKA' || ANGKA || 'LEBIH BESAR DARI 10');
ELSIF ANGKA < 10 THEN
DBMS_OUTPUT.PUT_LINE('ANGKA' || ANGKA || 'LEBIH KECIL DARI 10');
ELSE
DBMS_OUTPUT.PUT_LINE('ANGKA' || ANGKA || 'SAMA DENGAN 10');
END IF;
END;
/
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Blok PL/SQL diatas terdapat simbul ampersand (&) yang digunakan untuk meminta
inputan user. Apabila user memasukkan angka lebih besar dari 10 maka Oracle Server akan
mencetak statement DBMS_OUTPUT.PUT_LINE yang pertama. Jika Angka yang diinput
lebih keci dari 10 Maka Oracle Server akan mencetak
statement DBMS_OUTPUT.PUT_LINE yang kedua. Dan jika tidak ada kondisi yang
memenuhi semua kondisi diatas, maka oracle server akan mencetak
statement DBMS_OUTPUT.PUT_LINE yang ketiga.
CASE Statement
Selain menggunakan statement IF, Oracle juga menyediakan alternatif lain untuk
melakukan pemilihan statement, yaitu dengan menggunakan CASE Statement. CASE
statement hampir sama logikanya dengan menggunakan SWITCH-CASE pada bahasa C.
Syntax :
CASE (ekspresi)
WHEN nilai_1 THEN Statemen_1;
WHEN nilai_2 THEN Statemen_2;
………
WHEN nilai_n THEN Statemen_n
[ELSE Statemen_lain;]
END CASE;
DECLARE
noBulan integer;
namaBulan varchar2(9);
BEGIN
noBulan := 3;
CASE noBulan
WHEN 1 then namaBulan := ‘January’;
WHEN 2 then namaBulan := ‘Februari’;
WHEN 3 then namaBulan := ‘Maret’;
WHEN 4 then namaBulan := ‘April’;
WHEN 5 then namaBulan := ‘Mei’;
WHEN 6 then namaBulan := ‘Juni’;
WHEN 7 then namaBulan := ‘Juli’;
WHEN 8 then namaBulan := ‘Agustus’;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
WHEN 9 then namaBulan := ‘September’;
WHEN 10 then namaBulan := ‘Oktober’;
WHEN 11 then namaBulan := ‘November’;
WHEN 12 then namaBulan := ‘Desember’;
ELSE namaBulan := ‘’;
END CASE;
DBMS_OUTPUT.PUT_LINE(NAMABULAN);
END;
/
SET SERVEROUTPUT ON
SET VERIFY OFF
DECLARE
input VARCHAR2(1):= upper('&input');
kota VARCHAR2(50);
BEGIN
kota:=
CASE input
WHEN 'A' THEN 'Jakarta'
WHEN 'B' THEN 'Padang'
WHEN 'C' THEN 'Bandung'
ELSE 'Indonesia'
END;
DBMS_OUTPUT.PUT_LINE ('Input: '|| input|| 'Kota' || kota);
END;
Perulangan
Pengulangan adalah suatu blok yang memperbolehkan statemen-statemen dalam
sebuah blok PL/SQL diulang-ulang. Tiga buah jenis struktur pengulangan dalam Oracle,
yaitu simple loop, For dan While.
BASIC LOOPS
Basic Loop pada PL/SQL hampir sama logikanya dengan DO-WHILE pada Bahasa
Prosedural yang lain, contonhnya pada bahasa C. Pada Basic Loop Minimal 1 kali Terjadi
looping.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Syntax :
LOOP
Statement;
………
END LOOP;
Contoh :
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
counter NUMBER(2) := 1;
new_city locations.city%TYPE := 'Montreal';
BEGIN
SELECT MAX(location_id) INTO loc_id FROM locations
WHERE country_id = countryid;
LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + counter), new_city, countryid);
counter := counter + 1;
EXIT WHEN counter > 3;
END LOOP;
END;
/
SQL> DECLARE
2 k integer;
3 BEGIN
4 k:=1;
5 Loop
6 DBMS_OUTPUT.PUT_LINE('Baris ke-'||TO_CHAR(k));
7 k:=k+1;
8 exit when k>5;
9 END LOOP;
10 END;
11 /
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
FOR LOOPS
FOR pada PL/SQL logikanya sama dengan FOR pada Bahasa Prosedural yang lain,
contonhnya pada bahasa C. Dan kita menggunakan FOR LOOP ketika kita sudah
mengetahui batas angka perulangannya
SQL> DECLARE
2 k integer;
3 BEGIN
4 FOR k in 1..5 LOOP
5 DBMS_OUTPUT.PUT_LINE(‘Baris ke – ‘||to_char(k));
6 END LOOP;
7 END;
/
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
new_city locations.city%TYPE := 'Montreal';
BEGIN
SELECT MAX(location_id) INTO loc_id
FROM locations
WHERE country_id = countryid;
FOR i IN 1..3 LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + i), new_city, countryid );
END LOOP;
END;
/
WHILE LOOP
Kita menggunakan WHILE LOOPS ketika kita ingin mengecek terlebih dahulu kondisi
yang ada, baru kemudian lakukan looping sampai syaratnya tidak terpenuhi.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
WHILE kondisi LOOP
Statemen;
…………..
END LOOP;
Contoh :
DECLARE
k integer;
BEGIN
k := 1;
WHILE k <= 5 loop
DBMS_OUTPUT.PUT_LINE(‘Baris ke – ‘||to_char(k));
k := k+1;
END LOOP;
END;
/
DECLARE
countryid locations.country_id%TYPE := 'CA';
loc_id locations.location_id%TYPE;
new_city locations.city%TYPE := 'Montreal';
counter NUMBER := 1;
BEGIN
SELECT MAX(location_id) INTO loc_id FROM locations
WHERE country_id = countryid;
WHILE counter <= 3 LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((loc_id + counter), new_city, countryid);
counter := counter + 1;
END LOOP;
END;
/
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Handling Exceptions
Handling Exceptions merupakan salah satu kelebihan dari PL/SQL yang digunakan
untuk menangani error yang terjadi pada saat run time.
Sebagai contoh, pada saat kita menuliskan sebuah query, dan data tersebut tidak
ditemukan di dalam database, maka oracle akan membangkitkan eksepsi
NO_DATA_FOUND dengan kode ORA-01403 yang berarti data tidak ditemukan. Berikut ini
kita akan menuliskan perbedaan dengan menggunakan blok eksepsi dengan yang tidak
menggunakan blok eksepsi.
Contoh Yang tidak Menggunakan blok eksepsi :
SET SERVEROUTPUT ON
DECLARE
nama employees.last_name%type;
BEGIN
SELECT last_name INTO nama FROM employees
WHERE employee_id = 309;
DBMS_OUTPUT.PUT_LINE ('nama');
END;
Hasilnya:
DECLARE
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 4
SET SERVEROUTPUT ON
DECLARE
nama employees.last_name%type;
BEGIN
SELECT last_name INTO nama FROM employees
WHERE employee_id = 309;
DBMS_OUTPUT.PUT_LINE ('nama');
EXCEPTION
WHEN NO_DATA_FOUND THEN
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
DBMS_OUTPUT.PUT_LINE ('Tidak Ditemukan Datanya dalam Database');
END;
Hasilnya :
Tidak Ditemukan Datanya dalam Database
PL/SQL procedure successfully completed.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Berikut ini merupakan keterangan dari nama exception di PL/SQL
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
Kita tidak perlu menghafal semua nama dari setiap exception handling diatas, kita
cukup hanya menghafal beberapa saja dan sisanya kita dapat menggunakan eksepsi
OTHERS.
DECLARE
empno NUMBER;
BEGIN
SELECT employee_id INTO empno FROM employees ;
DBMS_OUTPUT.PUT_LINE(empno);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Data Tidak Ditemukan');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Terjadi Error yang Lain');
END;
Hasil :
Terjadi Error yang Lain
PL/SQL procedure successfully completed.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
Contoh :
SET SERVEROUTPUT ON
DECLARE
kebanyakan EXCEPTION;
PRAGMA EXCEPTION_INIT(kebanyakan, -01422);
emp employees.employee_id%type;
BEGIN
SELECT employee_id INTO emp FROM Employees;
DBMS_OUTPUT.PUT_LINE(EMP);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Hasil tidak ditemukan');
WHEN kebanyakan THEN
DBMS_OUTPUT.PUT_LINE(‘Hasilnya kebanyakan’);
END;
Contoh :
SET SERVEROUTPUT ON
DECLARE
emp employees%rowtype;
BEGIN
SELECT * into emp FROM EMPLOYEES WHERE employee_id > 100;
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('No Data Found');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
13 Tim Dosen http://www.mercubuana.ac.id
DBMS_OUTPUT.PUT_LINE('error code ='||SQLCODE);
DBMS_OUTPUT.PUT_LINE('error message ='||SQLERRM);
END;
Hasilnya :
ERROR
error code =-1422
error message =ORA-01422: exact fetch returns more than requested number of rows
PL/SQL procedure successfully completed.
Contoh :
SET SERVEROUTPUT ON
DECLARE
name VARCHAR2(100);
sal NUMBER;
BEGIN
SELECT last_name, salary INTO name, sal FROM employees WHERE
employee_id = 120;
IF sal > 5000 THEN
RAISE_APPLICATION_ERROR (-20000,'Gaji Kebanyakan');
END IF;
DBMS_OUTPUT.PUT_LINE(name||' '||sal);
END;
Hasilnya :
DECLARE *
ERROR at line 1:
ORA-20000: Gaji Kebanyakan
ORA-06512: at line 8
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
14 Tim Dosen http://www.mercubuana.ac.id
Soal Praktikum
1. Buatlah Deret Bilangan Ganjil dengan menggunakan PL/SQL. Jumlah Berdasarkan deret
inputan user.
2. Buatlah dalam blok PL/SQL yang dapat mencari dan menampilkan nama pegawai yaitu :
Asfianti( catatan : gunakan tabel Pegawai milik user sales );
3. Buat Satu PL/SQL Menggunakan Percabangan (Kasus Bebas)
4. Buatlah Handling Exception masing-masing 1 Kasus untuk Handling Exception
Sederhana, Pragma Exception, SQLCODE dan SQLERRM, dan Raise Application Error.
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
15 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 11
Procedure dan Function Pada
PL / SQL
11
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
procedure dan function pada PL / SQL procedure dan function pada PL / SQL
PROCEDURE
Procedure dan function adalah sebuah blok PL/SQL yang dapat berdiri sendiri dan
disimpan sebagai suatu objek di dalam database untuk melakukan tugas-tugas spesifik
tertentu. Hal ini akan membuat kode yang dibuat lebih bersifat modular sehingga mudah
untuk di-maintain.
Procedure adalah suatu blok PL/SQL yang menyimpan sekumpulan perintah yang
tidak disertai dengan pengembalian nilai. Dengan kata lain, procedure hanya melakukan
proses tertentu saja.
Prosedur merupakan subprogram PL/SQL yang berdiri sendiri. Kalau kita punya
pekerjaan rutin dan command-commandnya pun itu-itu saja, kita bisa menyimpan comand-
command tersebut dan memanggilnya kapan saja kita mau. Itulah filosofi dari prosedur.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Nama_Procedure;
END;
/
Contoh :
CREATE OR REPLACE PROCEDURE cetak AS
d varchar(50);
BEGIN
d :=q'(Coba’s lagi)';
DBMS_OUTPUT.PUT_LINE(d);
END;
/
Jalankan dengan perintah SQL>exec cetak;
Execute Procedure
EXECUTE nama_procedure(Parameter1,Parameter2,…);
• Parameter terbagi menjadi 3 yaitu parameter masukan, keluaran, dan parameter
masukan/keluaran.
• Parameter masukan dideklarasikan sebagai data untuk pengolahan procedure dan
ditandai dengan IN.
Contoh :
CREATE OR REPLACE PROCEDURE tambah (a IN INTEGER) AS
hasil INTEGER(5);
BEGIN
hasil := a + 1;
DBMS_OUTPUT.PUT_LINE(‘Hasil akhir = ‘ || hasil);
END;
/
Jalankan dengan
EXECUTE tambah(9);
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
pada Procedure dinamakan Formal Parameter. Sedangkan Parameter yang terdapat pada
si pemanggil Procedure adalah Actual Parameter.
Tipe Parameter pada Procedure ada 3 :
1. IN parameter, Merupakan Tipe parameter yang didefinisikan pada aktual parameter
untuk kemudian ditangkap oleh formal parameter. Kita tidak perlu menuliskan IN
untuk mendefinisikan parameter tersebut, karena parameter IN telah didefinisikan
secara DEFAULT oleh Oracle.
2. OUT parameter. Merupakan tipe parameter pada procedure yang nilainya dapat
digunakan oleh si pemanggil procedure dan bisa dibilang OUT parameter merupakan
kebalikan dari IN parameter.
3. IN OUT parameter. Tipe parameter yang digunakan untuk mengirimkan sebuah nilai
ke procedure yang kemudian akan diproses dan dikembalikan kepada si pemanggil
procedure.
Contoh IN Parameter
Nb: Sesuaikan urutan nilai parameter antara aktual parameter dengan Formal Parameter
baik menggunakan IN atau OUT parameter.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Contoh IN OUT Paremeter
Pertama kita buat terlebih dahulu Procedure format_phone yang akan mengubah format
karakter
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE format_phone
(phone_no IN OUT VARCHAR2) IS
BEGIN
phone_no := '(' || SUBSTR(phone_no,1,3) || ')' || SUBSTR(phone_no,4,3) || '-' ||
SUBSTR(phone_no,7);
END format_phone;
/
Perhatikan sebelumnya value dari Phone adalah ’234234ASDA’ . Lalu setelah kita
panggil PROCEDURE format_phone dengan memasukkan variabel phone ke dalam
parameternya, maka secara otomatis akan mengambil value tersebut (IN parameter) yang
kemudian akan diproses dan dikembalikan lagi nilainya(OUT Parameter) kedalam bentuk
yang berbeda menjadi ‘(234)234-ASDA ‘.
PASSING PARAMETERS
Ada berbagai macam cara dalam melakukan passing parameter.
1. Positional
Passing Parameter secara Positional adalah passing dengan menyesuaikan urutan
pada formal parameter dengan aktual parameter, seperti yang sudah kita lakukan
sebelumnya
2. Named
Kalau yang ini merupakan passing Parameter dengan cara menspesifikkan nama
variable formal parameter di parameter aktual dengan menggunakan bantuan ‘ => ‘.
contoh :
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
EXECUTE add_dept (loc=>2400, name=>’EDUCATION’)
3. Combination
Combination merupakan kombinasi dari Passing secara Positional dengan Named
contoh :
EXECUTE add_dept (‘EDUCATION’,loc=>2400)
Latihan Procedure
Contoh Latihan :
SQL> CREATE OR REPLACE PROCEDURE FIBO AS
2 K INT;
3 I INT;
4 J INT;
5 BEGIN
6 K:=1;
7 I:=1;
8 DBMS_OUTPUT.PUT_LINE(TO_CHAR(K));
9 DBMS_OUTPUT.PUT_LINE(TO_CHAR(I));
10 LOOP;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
11 J:=K+I;
12 DBMS_OUTPUT.PUT_LINE(TO_CHAR(J));
13 K:=I;
14 I:=J;
15 EXIT WHEN J>20;
16 END LOOP;
17 END;
18 /
CREATE TABLE MHS (NAMA VARCHAR2 (20), NPM VARCHAR2 (8) PRIMARY KEY,
KELAS VARCHAR2 (5))
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
CREATE TABLE MHS (NAMA VARCHAR2 (20), NPM VARCHAR2 (8) PRIMARY KEY,
KELAS VARCHAR2 (5));
SQL> CREATE OR REPLACE PROCEDURE tambah (npm varchar2,nama
varchar2,kelas varchar2) AS
2 begin
3 execute immediate 'truncate table mhs';
4 INSERT INTO MHS VALUES(npm,nama,kelas);
5 commit;
6 end;
7 /
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
FUNCTION
Stored Function merupakan sebuah blok PL/SQL yang dapat mengembalikan
sebuah nilai. Stored Function juga dapat disimpan dalam sebuah schema object, sehingga
dapat digunakan secara berulang-ulang.
Berikut Perbedaan Stored Procedure dengan Stored Function
Syntax Function :
CREATE [OR REPLACE] FUNCTION function_name
[(parameter1 [mode1] datatype1, …)]
RETURN datatype IS|AS
[local_variable_declarations; …]
BEGIN
– actions;
RETURN expression;
END [function_name];
Contoh :
SET SERVEROUTPUT ON
CREATE OR REPLACE FUNCTION Lihat_Gaji (ID
Employees.employee_id%TYPE)
RETURN NUMBER
IS
Gaji NUMBER;
BEGIN
SELECT Salary INTO Gaji FROM Employees
WHERE employee_id = id;
RETURN Gaji;
END;
/
EXECUTE DBMS_OUTPUT.PUT_LINE (Lihat_Gaji(100))
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
Fungsi diatas adalah fungsi yang digunakan untuk melihat gaji employee
berdasarkan employee_id.
Selain dengan cara diatas, kita juga dapat menggunakan SQL statement untuk
mendapatkan nilai dari sebuah function.
contoh :
SELECT employee_id,last_name, Lihat_gaji(employee_id) FROM employees
Contoh lain :
CREATE OR REPLACE FUNCTION Naik_Gaji (Salary NUMBER) RETURN
NUMBER
IS
Gaji_Sekarang NUMBER;
BEGIN
Gaji_Sekarang := Salary + 1000 ;
RETURN Gaji_Sekarang;
END;
/
SELECT Employee_id, Naik_Gaji(salary) FROM Employees
WHERE Department_id = 20;
Berikut tempat-tempat yang dapat kita gunakan sebuah function pada SQL Statement :
1. Pada SELECT list
2. Pada Clausa WHERE atau HAVING
3. Pada Clausa CONNECT BY, START WITH, ORDER BY, dan GROUP BY
4. Pada VALUES clause dalam INSERT query
5. Pada SET clause dalam UPDATE query
Drop Function
Kita dapat menghapus fungsi yang telah kita buat dengan menggunakan perintah
DROP:
Syntax :
DROP FUNCTION nama_function
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Return Value
Sebuah functionakan mengembalikan nilai sesuai dengan tipe data yang ditentukan.
Untuk memberikan nilai kedalam function setelah diolah, maka dalam function dikenal
dengan RETURN.
Contoh
CREATE OR REPLACE FUNCTION nama_function
(parameter1,parameter2,…)
RETURN tipe_data AS
variable1 tipe_data;
…
BEGIN
statement;
RETURN nilai_yang_dikembalikan
END;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
END IF;
FOR J IN 2..(bil/2) LOOP
IF MOD(bil,J) = 0 THEN
PRIMA:=FALSE;
EXIT;
END IF;
END LOOP;
RETURN PRIMA;
END;
CREATE OR REPLACE FUNCTION pangkat (bil INTEGER, n INTEGER)
RETURN INTEGER AS
HASIL INTEGER(10);
I INTEGER;
BEGIN
HASIL := 1;
FOR I IN 1..n LOOP
HASIL := HASIL * bil;
END LOOP;
RETURN HASIL;
END;
/
DECLARE
H INTEGER;
BEGIN
H := pangkat(2, 3);
DBMS_OUTPUT.PUT_LINE(‘Hasil = ‘ || TO_CHAR(H));
END;
/
Nested Function
CREATE OR REPLACE FUNCTION kuadrat(X NUMBER) RETURN NUMBER AS
HASIL NUMBER(10);
BEGIN
HASIL :=X*X;
RETURN HASIL;
END;
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
12 Tim Dosen http://www.mercubuana.ac.id
CREATE OR REPLACE FUNCTION determinan (a NUMBER, b NUMBER, c NUMBER)
RETURN NUMBER AS D NUMBER(10);
BEGIN
D:=kuadrat(b)-(4*a*c);
RETURN D;
END;
SET SERVEROUTPUT ON
DECLARE D NUMBER (10);
BEGIN
D:=determinan(1,1-6);
DBMS_OUTPUT.PUT_LINE(‘Nilai Determinan = ‘ || TO_CHAR(D));
END;
Soal Praktikum
Execute keliling_lingkaran;
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
13 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 12
Trigger Pada PL / SQL
12
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
trigger pada PL / SQL trigger pada PL / SQL
TRIGGER
Trigger adalah sebuah obyek dalam database yang berupa prosedur dalam bentuk
kode-kode sql yang merespon setiap kali terdapat proses modifikasi dalam table. Proses
modifikasi itu adalah berupa Data Manipulation Language(DML) yaitu insert, update dab
delete.
Tujuan dari trigger adalah untuk menjaga integritas dan konsistensi data. Biasanya
diimplementasikan pada tabel tabel yang memiliki relasi. Trigger dapat dieksekusi sebelum (
before Event) atau sesudah (after Event) modifikasi.
Agar user dapat membuat object trigger maka harus diberi privileges trigger. Caranya
login sebagai user sys dan berikan perintah :
Trigger biasanya digunakan untuk menampilkan komentar apabila terjadi suatu aksi
pada table. Aksi tersebut adalah statement Dinamyc Modeling Language (DML), dan
dilaksanana pada kejadian tertentu.Selain kejadian secara umum juga kejadian yang
menggunakan kondisi. Kelebihan trigger di oracle kita juga bisa membuat kode dan pesan
erroe sendiri yang tidak ada dalam oracle. Dalam memberi kode error harus di atas 20000,
karena itu kode yang dibolehkan, sebab kode di 20000 sudah dipakai oleh oracle. Trigger
akan memicu perubahan di table lain jika ada aksi tertentu pada suatu table.
Untuk menampilkan pesan apabila transaksi terjadi menggunakan perintah
dbms_ouput.put_line('...kalimat pesan...'); sedangkan untuk menampilkan pesan error
adalah raise_application_error(-kode_error,'...kalimat pesan error...');
Secara defaul pesan tidak akan ditampilkan karena serveroutput masih off. Untuk
melihat status server output dengan perintah show serveroutput; dan untuk merubah status
ke on adalah set serveroutput on;
2. Database Trigger
Yang dimana trigger tersebut akan teraktivasi ketika terjadi suatu data event (operasi
DML (INSERT, UPDATE, DELETE)) atau system event (logon or shutdowm) pada
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
sebuah schema atau database dan untuk selanjutnya kita akan membahas tentang
trigger ini.
Syntax Trigger
CREATE OR REPLACE TRIGGER nama_trigger (BEFORE | AFTER)
(INSERT|UPDATE|UPDATE OF nama_kolom|DELETE) ON nama_tabel
FOR EACH ROW
WHEN (kondisi)
DECLARE
variable1;
…
BEGIN
statemen1;
…
END;
Event
BEFORE INSERT: dieksekusi sebelum statement Insert
BEFORE INSERT FOR EACH ROW : dieksekusi sebelum setiap baris baru dibuat.
AFTER INSERT : diaktivasi setelah statement insert sukses dilakukan
AFTER INSERT FOR EACH ROW : diaktivasi setelah setiap baris baru dibuat.
BEFORE UPDATE : diaktivasi sebelum statement Update
BEFORE UPDATE FOR EACH ROW : diaktivasi sebelum setiap baris baru diubah.
AFTER UPDATE : diaktivasi setelah statement update sukses dilakukan
AFTER UPDATE FOR EACH ROW : diaktivasi setelah setiap baris baru diubah.
BEFORE DELETE : diaktivasi sebelum statement Delete
BEFORE DELETE FOR EACH ROW : diaktivasi sebelum setiap baris baru dihapus.
AFTER DELETE : diaktivasi setelah statement Delete sukses dilakukan.
AFTER DELETE FOR EACH ROW : diaktivasi setelah setiap baris baru dihapus.
Contoh :
*/Buat table stok terlebih dahulu
CREATE OR REPLACE TRIGGER stok2
BEFORE INSERT ON STOK
FOR EACH ROW
BEGIN
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
DBMS_OUTPUT.PUT_LINE(‘Trigger BEFORE INSERT dilaksanakan’);
END;
/
Untuk melihat apakah trigger tersebut dieksekusi, dapat dilakukan proses insert terhadap
tabel STOK.
Proses Update
Dalam Proses update alias :new akan digunakan untuk mengambil nilai kolom pada
data yang baru, sedangkan alias : old akan mengambil nilai kolom dari data yang
sebelumnya.
UPDATE STOK SET JUMLAH = 10 WHERE KODE = ‘0007’
:new.JUMLAH : 10
:old.JUMLAH : 5 ( data sebelumnya)
Proses Delete
Namun dalam proses delete, hanya dikenal alias :old sebagai penampung data kolom
pada nilai yang dihapus.
DELETE FROM STOK WHERE KODE = ‘0007’;
:old.KODE : 0007
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
:old.NAMA_BARANG : Komputer
:old.JUMLAH : 10
Contoh :
CREATE OR REPLACE TRIGGER backup
BEFORE UPDATE ON Employees
BEGIN
RAISE_APPLICATION_ERROR(-20001,'Tabel Employees Tidak Dapat Dirubah');
END;
Trigger diatas berfungsi untuk melarang terjadinya proses UPDATE pada tabel
employees dan Ketika kita mencoba untuk mengUpdate tabel employees
UPDATE employees
SET salary = 1000
WHERE employee_id= 100
Hasilnya :
ERROR at line 1:
ORA-20001: Tabel Employees Tidak Dapat Dirubah
ORA-06512: at “HR.BACKUP_SALARY”, line 2
ORA-04088: error during execution of trigger ‘HR.BACKUP_SALARY’
Trigger diatas akan aktif ketika kita melakukan operasi UPDATE pada Kolom Salary di
Tabel employees.
IF-ELSE TRIGGER
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
RAISE_APPLICATION_ERROR(-20001, 'Tabel Emp Tidak Dapat DiRubah');
ELSIF DELETING THEN
RAISE_APPLICATION_ERROR(-20002, 'Tabel Emp Tidak Dapat DiHapus');
ELSE
RAISE_APPLICATION_ERROR(-20003, 'Tabel Emp Tidak Dapat DiTambah');
END IF;
END;
/
Trigger diatas akan menampilkan pesan ketika kita melakukan operasi DML(INSERT,
UPDATE, DELETE) pada tabel employees
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
CREATE OR REPLACE TRIGGER backup_sal
AFTER UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO backup_salary(emp_id, old_salary, new_salary, backupdate)
VALUES (: old.employee_id, : old.salary, :new.salary, SYSDATE);
END;
/
Trigger diatas berfungsi untuk memasukkan data employee_id yang lama, salary yang
lama, salary yang baru dan tanggal perubahan ke tabel backup_salary. Trigger tersebut
teraktivasi Ketika kita mengUpdate salary pada Tabel Employees
Trigger diatas berfungsi untuk memastikan kalau data salary pada tabel employees yang
dimasukkan minimal $2000
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Contoh :
CREATE OR REPLACE TRIGGER BackupData
BEFORE DROP ON SCHEMA
BEGIN
RAISE_APPLICATION_ERROR(-20005,' Tidak diperbolehkan untuk
menghapus table pada schema ini');
END;
Trigger diatas akan mencegah terjadinya pengeksekusian statement DROP pada schema.
MANAGING TRIGGER
Mengaktifkan TRIGGER
Syntax :
ALTER TRIGGER trigger_name ENABLE
Menonaktifkan Trigger
Syntax :
ALTER TRIGGER trigger_name DISABLE
Menghapus TRIGGER
Syntax :
DROP TRIGGER nama_trigger
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Di dalam system terdapat Event-event Yang Mungkin terjadi yaitu :
Event Possible Value
AFTER Trigger akan diaktifkan ketika terjadinya server error
SERVERERROR
AFTER LOGON Trigger akan diaktifkan ketiga ada user yang masuk ke
database
BEFORE LOGOFF Trigger akan diaktifkan ketika user ingin keluar dari database
AFTER STARTUP Trigger akan dijalankan ketika database dijalankan
BEFORE Trigger akan dijalankan ketika database ingin di shut down
SHUTDOWN
Syntax :
CREATE [OR REPLACE] TRIGGER trigger_name
timing
[database_event1 [OR database_event2 OR ...]]
ON {DATABASE|SCHEMA}
trigger_body
Contoh :
Kita akan membuat sebuah trigger yang digunakan untuk mengetahui kapan dan
siapa user yang login dan logoff pada sebuah schema. Hal pertama yang kita
lakukan adalah membuat sebuah table History yang nantinya akan menampung data
tentang siapa yang login dan logoff dari schema.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
trigger logoff_trig yang digunakan untuk memasukkan detail data user yang logoff dari
skema.
CREATE OR REPLACE TRIGGER logon_trig
AFTER LOGON ON SCHEMA
BEGIN
INSERT INTO History VALUES (USER, SYSDATE, 'Logging on');
END;
/
Karena contoh diatas kita menspesifikkan trigger tersebut pada schema (ON
SCHEMA), trigger logon dan logoff_trig hanya akan diaktifkan ketika kita login dan logoff
pada schema tempat kita membuat trigger login dan logoff_trigger, misalkan kita membuat
trigger tersebut pada schema yang dimiliki oleh hr, maka data yang ada adalah data yang
keluar dan masuk pada skema hr.
Sedangkan jika kita menspesifikkan trigger tersebut pada DATABASE (ON
DATABASE), trigger tersebut akan aktif terhadap schema yang dimiliki oleh semua user.
Namun untuk dapat membuat sebuah trigger pada database diperlukan sebuat
ADMINISTER DATABASE TRIGGER privilege.
Berikut Privilege yang digunakan dalam trigger :
CREATE/ALTER/DROP (ANY) TRIGGER privilege, yang digunakan untuk membuat
trigger pada schema
ADMINISTER DATABASE TRIGGER privilege, yang digunakan untuk membuat
trigger dalam database
EXECUTE privilege, yang digunakan apabila trigger yang kita buat diperuntukkan
untuk object yang tidak kita miliki
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
10 Tim Dosen http://www.mercubuana.ac.id
Manfaat Trigger
Dengan adanya trigger kita dapat menggunakannya untuk :
Security
Dengan adanya trigger kita dapat membatasi siapa saja yang dapat mengakses object
dalam database sesuai dengan nilai yang telah dideklarasikan oleh trigger tersebut.
Auditing
Dengan adanya trigger kita dapat melacak aliran data yang terjadi di dalam database
Data integrity
Trigger dapat menjaga integritas data
Referential integrity
Ketika Oracle Server hanya dapat membuat standard referential integrity rules, Trigger
dapat mengimplementasikan nonstandard functionality
Table replication
Trigger dapat menyalin Table ke dalam bentuk replika
Computing derived data automatically
Triggers compute derived data values automatically
Event logging
Trigger dapat membuat hisrory logging secara transparant
Soal Praktikum
1. Buatlah trigger untuk menambahkan jumlah pasok barang yang ada pada tabel barang
setiap kali dilakukakn pemasukan (insert) data pada tabel pasok, dimana jumlah yang
ditambahkan ke dalam stok barang tersebut adalah jumlah pasok pada saat pemasokan!
2. Buatlah trigger untuk mengurangi jumlah stok barang yang ada pada tabel barang setiap
kali dilakukan penghapusan (delete) data pada tabel pasok, dimana jumlah yang
digunakan untuk pengurangan stok barang tersebut adalah jumlah pasok dari baris yang
dihapus pada tabel pasok!
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
11 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 13
Cursor Pada PL / SQL
13
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang perintah-perintah Mampu memahami perintah-perintah
cursor pada PL / SQL cursor pada PL / SQL
Cursor
Pada block PL/SQL kita tidak bisa menampilkan beberapa baris dengan menggunakan
perintah SELECT secara langsung. Untuk mengatasi hal tersebut, maka kita dapat
menggunakan sebuah kursor. Berbeda dengan variabel skalar, cursor dapat menampung
banyak nilai berupa baris atau record. Nilai-nilai yang disimpan dalam sebuah kursor
kemudian dapat dimanipulasi sehingga dapat digunakan sesuai kebutuhan.
Dalam Membuat cursor terdapat 4 tahap yang harus kita lakukan yaitu :
1. DECLARE
DECLARE digunakan untuk mendeklarasikan cursor yang akan kita gunakan
2. OPEN
OPEN digunakan untuk mengaktifkan cursor yang akan kita gunakan
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
3. FETCH
FETCH digunakan untuk mengambil data dari cursor, dan kemudian data tersebut
kita tampung ke dalam satu atau beberapa variabel.
4. CLOSE
CLOSE digunakan untuk menonaktifkan atau menutup cursor yang kita gunakan
Cursor diatas kita deklarasikan dengan menggunakan nama cur_emp dan cursor tersebut
menunjuk atau berisi data employee_id, last_name dari tabel employees yang mempunyai
department id = 30
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Contoh Lengkap :
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, last_name, salary FROM Employees
WHERE department_id = 20;
empId employees.employee_id%type;
name employees.last_name%type;
Sal employees.salary%type;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO empID, Name, Sal ;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(empID||’ ‘||Name||’ ‘||Sal);
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘jumlah Data ‘||’ ‘||emp_cursor%ROWCOUNT);
CLOSE emp_cursor;
END;
/
Cursor diatas dideklarasikan dengan nama emp_cur yang berisi data employee_id,
last_name dari tabel employees dengan department_id =30. lalu dibuat 3 buah variabel baru
yang bernama empID, Name, dan Sal dengan tipe data reference. Karena employee_id
pada department id = 30 terdapat beberapa employee, maka kita gunakan sebuah metode
LOOPING yang akan secara otomatis akan menunjuk data satu persatu yang mempunyai
department_id =30.
Berhenti ketika Cursor tersebut tidak menemukan data yang mempunyai department
id = 30. Setelah itu datanya kita FETCH dan kemudian ditampung ke dalam variabel empId,
Name, dan Sal. Lalu kita tampilkan hasilnya dengan
menggunnakan DBMS_OUTPUT.PUT_LINE. Dan terakhir cursor tersebut ditutup.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
CURSOR Dengan RECORD
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, last_name, Salary FROM employees
WHERE department_id = 30;
emp_record emp_cursor%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( emp_record.employee_id||’ ‘ ||emp_record.last_name||’
‘||emp_record.salary);
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘Jumlah Data Yang Diambil:
‘||emp_cursor%ROWCOUNT);
CLOSE emp_cursor;
END;
/
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cur IS
SELECT employee_id, Last_name FROM employees
WHERE department_id = 30;
BEGIN
FOR emp_rec IN Emp_cur
LOOP
DBMS_OUTPUT.PUT_LINE(emp_rec.employee_id || emp_rec.last_name);
END LOOP;
END;
/
Dengan menggunkana metode pengulangan FOR, kita tidak perlu lagi
mendeklarasikan emp_rec karena record tersebut secara implisit telah dideklarasikan.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Selain itu, kita juga tidak perlu mendeklarasikan OPEN, FETCH, EXIT, dan CLOSE seperti
saat kita menggunakan metode BASIC LOOP karena perintah tersebut juga secara implisit
telah dideklarasikan. Dan Pada contoh diatas, emp_record akan berisi semua data pada
Emp_Cur
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
DECLARE
CURSOR emp_cursor IS
SELECT employee_id FROM employees
WHERE department_id = 20
Penjelasan :
Cursor diatas digunakan untuk merubah salary pada tabel empoloyees menjadi 5000,
dimana salary yang dirubah adalah karyawan yang employee_id nya terdapat pada
department_id = 20
contoh DELETE :
DECLARE
CURSOR emp_cursor IS
SELECT employee_id FROM employees
WHERE department_id = 20
FOR UPDATE OF Salary;
empId employees.employee_id%TYPE;
BEGIN
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
FOR emp_upd IN emp_cursor
LOOP
DELETE FROM employees
WHERE CURRENT OF emp_cursor;
END LOOP;
COMMIT;
END;
/
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
2. Tampilkanlah first name, last name, dan salary dari tabel employees dengan
menggunakan cursor yang memiliki sebuah parameter. Kemudian Tampilkan data
karyawan tersebut dimana karyawan tersebut memiliki salary yang nilainya lebih kecil
dari salary dari parameter cursor.
DECLARE
CURSOR cur_emps(salary_param NUMBER) IS
SELECT first_name, last_name, salary
FROM employees WHERE salary < salary_param;
f_name employees.first_name%type;
l_name employees.last_name%type;
gaji employees.salary%type;
BEGIN
OPEN cur_emps(2500);
LOOP
FETCH cur_emps INTO f_name, l_name, gaji;
EXIT WHEN cur_emps%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(f_name || ' ' || l_name || ' memiliki gaji: ' || gaji);
END LOOP;
CLOSE cur_emps;
END;
/
Hasil jika nilai parameter=2500
Soal Praktikum
1. Buatlah sebuah cursor yang digunakan untuk mengUPDATE salary karyawan menjadi 2
kali gaji awal dimana id karyawan tersebut adalah 109. Kemudian tampilkan pesan ‘Data
Telah diUpdate’ ketika data telah berhasil diUPDATE (gunakan PARAMETER!) dan
tampilkan pesan ‘Karyawan tidak ditemukan’ ketika employee_id nya tidak terdapat
dalam database.
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Pemrogramman Sistem
Basis Data (Oracle)
Pertemuan 14
Application Builder
14
Ilmu Komputer Teknik Informatika 87043 Tim Dosen
Abstract Kompetensi
Memahami tentang pembuatan aplikasi Mampu memahami tentang pembuatan
dengan Application Builder pada aplikasi dengan Application Builder
Oracle pada Oracle
Application Builder
Kali ini kita akan membahas cara membangun Application Builder dengan Oracle 11g XE.
Oracle menyediakan fasilitas Application Builder untuk membuat aplikasi database tanpa
menggunakan Coding.
Langkah 1
Buatlah sebuah workspace dan tabel baru, dalam hal ini saya menggunakan tabel yang
saya buat di tutorial sebelumnya. Untuk lebih jelasnya dapat dilihat pada tutorial MEMBUAT
TABLE DI ORACLEXE 11.
Langkah 2
Selanjutnya adalah membuat application builder dari tabel yang kita buat.
Klik menu Application Builder-> Create.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
2 Tim Dosen http://www.mercubuana.ac.id
Pada dialog dialik pilih Database->klik Next
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
3 Tim Dosen http://www.mercubuana.ac.id
Masukkan nama Application (unik) yang akan anda buat ->klik next.
Langkah 3
Klik pilhan Report and Form, untuk membuat aplikasi dalam bentuk form dan laporan.
Browse tabel yang akan dibuatkan aplikasinya -> klik Next->klik Add Page.
Klik Create untuk langsung konfirmasi akhir, Atau klik Next untuk lanjut ke langkah
selanjutnya. Klik pilihan One Level of Tabs-> klik Next
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
4 Tim Dosen http://www.mercubuana.ac.id
Selanjutnya pilih No ->klik Next. Pada pilihan Application Express-> pilih bahasa yang
anda kehendaki ->browse Data Format-> klik Next.
Pada pemilihan tema tampilan, pilih tema yang anda inginkan ->klik Next. Klik Create
untuk konfimasi akhir.
Langkah 4
Klik icon Form dengan nama tabel yang kita buatkan aplikasinya.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
5 Tim Dosen http://www.mercubuana.ac.id
Double klik field NIM untuk diedit agar dapat ditampilkan dalam Form.
Ubah Display Field NIM menjadi Text Field ->klik Apply Changes.
Langkah 5
Jika diminta login, masukkan username dan password yang anda gunakan untuk masuk ke
dalam Workspace
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
6 Tim Dosen http://www.mercubuana.ac.id
Langkah 6
Klik menu nama_tabel untuk melihat isi data.
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
7 Tim Dosen http://www.mercubuana.ac.id
Klik icon pensil untuk mengedit data, atau Klik menu Home untuk kembali ke halaman
awal Oracle Express Edition.
Soal Praktikum
Soal 1
Lengkapi dan perbaikilah PL/SQL di bawah ini, apa output yang akan ditampilkan?
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
8 Tim Dosen http://www.mercubuana.ac.id
Soal 2
Buatlah sebuah form dengan menggunakan Base Table yang mengarah ke table
Employees, gunakan hanya field employee_id, first_name, last_name, email,
phone_number, hire_date dan job_id. Sehingga akan menghasilkan tampilan di bawah ini
Daftar Pustaka
Bambang Sutejo, Sukses Sertifikasi OCP, PT. Elex Media Komputindo, 2010, Jakarta
2013 Pemrogramman Sistem Basis Data Pusat Bahan Ajar dan eLearning
9 Tim Dosen http://www.mercubuana.ac.id