LAPORAN RESMI DM.doc

105
BAB I PENDAHULUAN 1.1 Latar Belakang Data mining adalah serangkaian proses untuk memanggil nilai tambah berupa informasi yang selama ini tidak diketahui secara manual dari suatu basisdata. Informasi yang dihasilkan diperolah dengan cara mengekstraksi dan mengenali pola yang penting atau menarik dari data yang terdapat dalam basisdata. Datamining terutama digunakan untuk mencari pengetahuan yang terdapat dalama basis data yang besar sehingga sering disebut Knowledge Discovery in Database (KDD). Pencarian pengeteahuan ini menggunakan berbagai teknik-teknik pembelajaran komputer (Machine Learning) untuk menganalisis dan mengekstrasinya. Proses pencarian bersifat iteratif dan interaktif untuk menemukan pola atau model yang sahih, baru bermanfaat dan dimengerti. Data mining tidak hanya digunakan untuk menangani persoalan menumpuknya data/informasi dan bagaimana menggudangkannya tanpa harus kehilangan informasi yang penting (Warehousing) . Data mining juga diperlukan untuk menyelesaikan permasalahan atau menjawab kebutuhan fisik itu sendiri. 1.2 Tujuan Praktikum

Transcript of LAPORAN RESMI DM.doc

Page 1: LAPORAN RESMI DM.doc

BAB I

PENDAHULUAN

1.1 Latar Belakang

Data mining adalah serangkaian proses untuk memanggil nilai tambah

berupa informasi yang selama ini tidak diketahui secara manual dari suatu

basisdata. Informasi yang dihasilkan diperolah dengan cara mengekstraksi dan

mengenali pola yang penting atau menarik dari data yang terdapat dalam

basisdata.

Datamining terutama digunakan untuk mencari pengetahuan yang terdapat

dalama basis data yang besar sehingga sering disebut Knowledge Discovery in

Database (KDD). Pencarian pengeteahuan ini menggunakan berbagai teknik-

teknik pembelajaran komputer (Machine Learning) untuk menganalisis dan

mengekstrasinya. Proses pencarian bersifat iteratif dan interaktif untuk

menemukan pola atau model yang sahih, baru bermanfaat dan dimengerti.

Data mining tidak hanya digunakan untuk menangani persoalan

menumpuknya data/informasi dan bagaimana menggudangkannya tanpa harus

kehilangan informasi yang penting (Warehousing). Data mining juga diperlukan

untuk menyelesaikan permasalahan atau menjawab kebutuhan fisik itu sendiri.

1.2 Tujuan Praktikum

Tujuan dilaksanakannya praktikum Data Mining dan Warehousing adalah

sebagai berikut :

1. Memahami konsep penggunaan PL/SQL Oracle

2. Mengerti esensi penggunaan percabangan (pemilihan/kondisional) dalam

PL/SQL

3. Mengerti esensi penggunaan pengulangan (looping/iterasi) dan sekuensial

dalam PL/SQL

4. Mampu mengimplementasikan CURSOR dalam pemrograman di Oracle

5. Mampu memahami cara kerja EXCEPTION, Predefined Exception, User

Define Exception, Unhandled Exception, RAISE_APPLICATION_ERROR,

EXCEPTION INIT PRAGMA dan EXCEPTION dalam PL/SQL di Oracle

Page 2: LAPORAN RESMI DM.doc

6. Mampu menguasai dan menerapkan Multi Block dalam PL/SQL

7. Mengetahui dan memahami procedure dan function pada PL/SQL

8. Mampu mengimplementasikan trigger dalam Oracle

9. Mampu mengimplementasikan index, view dan sequence dalam Oracle

10. Mengetahui dan memahami reporting dalam Oracle

11. Mampu mengimplementasikan simple report dalam Oracle

12. Mampu membuat user pada Oracle

13. Mampu memonitor user

14. Mampu melakukan manipulasi pada user

15. Mampu mengerti tentang roles dan menggunakannya

16. Mampu membuat dan memodifikasi roles

17. Mampu melakukan controlling dan removing pada roles.

1.3 Manfaat Praktikum

Dengan ilmu dan pengetahuan yang diperoleh melaui praktikum yang

dilaksanakan, mahasiswa dapat lebih mengembangkan kemampuan dalam

mengelola basis data dalam implementasinya untuk mengembangkan suatu

pengolahan data Warehousing yang efektif dan efisien.

Page 3: LAPORAN RESMI DM.doc

BAB II

TINJAUAN PUSTAKA

2.1 Pengertian Database

Ketersediaan data dan informasi yang dimiliki oleh suatu institusi akan

sangat membantu proses pengambilan kebijakan yang menyangkut kepentingan

bersama. Pengambilan kebijakan yang didukung oleh data akan berpengaruh besar

terhadap pola implementasi di lapangan. Sebaliknya keputusan yang diambil

secara spekulasi biasanya akan berujung kepada kegagalan.

Data perlu disimpan dalam basis data untuk keperluan penyediaan

informasi lebih lanjut. Data di dalam basis data perlu diorganisasikan sedemikian

rupa, agar informasi yang dihasilkan berkualitas. Database merupakan

sekumpulan informasi yang disusun sedemikian rupa untuk dapat diakses oleh

sebuah software tertentu. Database tersusun atas bagian yang disebut field dan

record yang tersimpan dalam sebuah file. Sebuah field merupakan kesatuan

terkecil dari informasi dalam sebuah database. Sekumpulan field yang saling

berkaitan akan membentuk record.

Tujuan utama dari sistem database adalah menyediakan pemakai melalui

suatu pandangan abstrak mengenai data, dengan menyembunyikan detail dari

bagaimana data disimpan dan dimanipulasikan. Oleh karena itu, titik awal untuk

perancangan sebuah database haruslah abstrak dan deskripsi umum dari

kebutuhan-kebutuhan informasi suatu organisasi harus digambarkan di dalam

database.

Ada tiga kelompok pemakai dalam tingkatan abstraksi saat memandang

suatu database, yang bisa juga disebut dengan level arsitektur basis data yaitu :

1. Level Fisik (Physical level)

Level ini merupakan level abstraksi paling rendah karena menggambarkan

bagaimana data disimpan dalam kondisi sebenarnya yang pada umumnya

tidak terlihat oleh oleh pengguna atau programmer aplikasinya.

2. Level Konseptual (Conceptual level)

Level ini menggambarkan data apa yang disimpan dalam database dan

hubungan relasi yang terjadi antara data dari keseluruhan database. Pemakai

Page 4: LAPORAN RESMI DM.doc

tidak memperdulikan kerumitan dalam struktur level fisik lagi, penggambaran

cukup dengan memakai kotak, garis,dan hubungan secukupnya.

mengambarkan data apa saja yang sebenarnya (secara fungsional) disimpan

didalam basis data beserta relasi-relasinya didalam basis data, dimana

administrator basis data (DBA) membangun dan mengolah basis data,

contohnya: penguna akan mengetahui bahwa data penjualan disimpan didalam

tabel barang, produksi, keuangan, marketing.

3. Level Pandangan Pemakai (View level)

Level ini merupakan level abstraksi data tertinggi yang menggambarkan hanya

sebagian saja yang dilihat dan dipakai dari keseluruhan database, hal ini

disebabkan beberapa pemakai database tidak membutuhkan semua isi

database.

2.2 Macam-macam Sistem Database

Berikut ini adalah macam-macam sistem database :

1. DBMS (Database Management System)

2. RDBMS (Relational DataBase Management System)

3. OODBMS (Objec Oriented DataBase Management System)

4. ORDBMS (Objec Oriented DataBase Management System)

2.3 DBMS (Database Management System)

DBMS adalah sebuah perangkat lunak yang digunakan untuk memanage

atau mengorganisir akses ke database, serta memiliki kemampuan untuk

membuat, memelihara, menyimpan, memanipulasi database dengan tujuan agar

mendapatkan kenyamanan dalam memperoleh informasi dalam database tanpa

mengurangi faktor keamanan dan keefesiensinya. Software yang tergolong

kedalam DBMS antara lain, Microsoft SQL, MySQL, Oracle, MS. Access, dan

lain-lain.

Fungsi DBMS adalah sebagai berikut :

1. Mengelola dan memelihara data

2. Memindahkan data ke dan dari file data fisik yang dibutuhkan

3. Mengelola akses data yang bersamaan oleh beberapa pengguna

Page 5: LAPORAN RESMI DM.doc

4. Mengawasi pembaharuan data dan mencegah konflik perubahan data

5. Mengelola transaksi sehingga perubahan data terjadi secara lengkap atau

tidak terjadi perubahan jika transaksi batal atau gagal

6. Mendukung bahasa query

7. Pengawasan back up database dan pemulihan dari kesalahan

8. Mekanisme keamanan.

2.4 Pengertian SQL

SQL ( Structured Query Language ) merupakan bahasa query yang

digunakan untuk mengakses database relasional. SQL adalah bahasa database

standard dan hampir semua sistem database memahaminya. SQL terdiri dari

berbagai jenis statement dan semuanya didesain agar memungkinkan untuk dapat

secara interaktif berhubungan dengan database.

Bahasa SQL terdiri atas beberapa bagian antara lain adalah sebagai berikut :

1. DDL ( Data Definition Language )

Merupakan perintah yang digunakan untuk membuat dan memodifikasi

objek database. Pernyataan DDL terdiri atas :

a. CREATE digunakan untuk membuat objek database

b. ALTER digunakan untuk mengubah atau memodifikasi struktur objek database

c. DROP digunakan untuk menghapus struktur database

2. DML ( Data Manipulation Language )

Merupakan perintah yang berfungsi untuk memanipulasi data yang ada

didalam database, misalnya untuk pengambilan, penyisipan, pengubahan, dan

penghapusan data. Pernyataan DML trediri atas :

a. SELECT digunakan untuk memilih data

b. INSERT digunakan untuk menambah data

c. DELETE digunakan untuk menghapus data

d. UPDATE digunakan untuk mengubah data

Page 6: LAPORAN RESMI DM.doc

3. DCL ( Data Control Language )

Merupakan perintah yang digunakan untuk mengendalikan pengaksesan

data. Pernyataan DCL meliputi :

a. GRANT digunakan untuk memberikan kendali pada pengaksesan data

b. REVOKE digunakan untuk mencabut kemampuan pengaksesan data

c. LOCK TABEL digunakan untuk mengunci tabel

2.5 Pengertian Oracle

Oracle Corporation merupakan perusahaan yang bergerak dibidang

penyediaan tool-tool pembangun aplikasi, produk-produk siap pakai dan

pelayanan untuk mendukung keperluan penanganan masalah-masalah yang

berkaitan dengan teknologi informasi. Aplikasi-aplikasi Oracle dapat dijalankan

pada berbagai platform dan sistem operasi, dari komputer personal sampai

komputer dengan multi processor.

Oracle menyediakan aplikasi RDBMS yang disebut dengan Oracle Server.

Fasilitas-fasilitas yang ada di dalamnya memungkinkan untuk menyimpan dan

mengatur informasi dengan segala keuntungan dari struktur relasional, ditambah

dengan PL/SQL, suatu engine yang mendukung dengan kemampuan untuk

menyimpan dan mengeksekusi objek-objek basis data, seperti procedure dan

trigger. Oracle Server ini menyediakan pilihan bagi pengguna untuk menampilkan

data berdasarkan teknik optimasi. Di dalamnya juga mengandung fasilitas untuk

keamanan data yang dapat mengontrol bagaimana suatu basis data diakses dan

digunakan. Fasilitas-fasilitas lainnya adalah bahwa Oracle Server memiliki

kemampuan untuk menjaga konsistensi dan proteksi data melalui mekanisme

locking, dan two-phase commit process untuk aplikasi basis data tedistribusi

melalui jaringan komputer.

Aplikasi-aplikasi Oracle dapat dijalankan pada satu komputer sebagai

Oracle Server. Sebagai alternatif, dapat menjalankan aplikasi-aplikasi Oracle

tersebut pada komputer lokal untuk pengguna dan komputer lainnya untuk Oracle

Server (client-server architecture). Pada lingkungan client-server ini, jangkauan

luas dari sumberdaya komputer dapat digunakan. Sebagai contoh, aplikasi

berbasis form pada sistem pelayanan penerbangan dapat dijalankan pada

Page 7: LAPORAN RESMI DM.doc

komputer personal, pada saat yang bersamaan data-data penerbangan yang

diperlukan oleh aplikasi tersebut ditangani oleh Oracle Server pada komputer

pusat.

Tabel 2.1. Macam-macam tipe data pada Oracle

No. Tipe Data Penjabaran Contoh

1 CHAR(n) Tipe data alphanumeric yang mampu

menampung sampai 2000 bytes (4 kb)

CHAR(15)

2 VARCHAR2(n) Sama seperti char tipedata ini dapat digunakan

untuk alphanumeric dan dapat menampung

sampai 4000 bytes (4 kb).

VARCHAR(50)

3 NUMBER(n,p) Tipe data ini hanya dapat digunakan untuk

menyimpan angka, dan kita tidak perlu

mendefinisikan panjang variable (kecuali

untuk bilangan decimal)

NUMBER(7,2)

4 DATE Tipe data ini digunakan untuk menyimpan data

berupa tanggal. Namun untuk

menggunakannya kita harus mengubahnya

dulu ke karakter dengan fungsi to_char

13-OCT-94

5 TIMESTAMP Tipe data ini juga digunakan untuk

menyimpan data dalam bentuk tanggal. Hanya

bedanya dengan date, tipe ini tidak perlu

diubah karakter jika ingin digunakan. Tipe ini

juga akan menyimpan tanggal dan waktu.

-

6 CLOB Tipe ini memperbolehkan untuk menyimpan

data alphanumeric yang berukura sangat besar

( sekitar 4gb)-

7 BLOB Sama dengan Clob tipe ini juga dapat

digunakan untuk menyimpan data dengan

jumlah sangat besar, bedanya tipe ini juga

dapat digunakan untuk menyimpan file audio

-

2.6 PL/SQL pada Oracle

PL/SQL (Procedural Language/Structured Query Language) merupakan

sebuah penggabungan antara bahasa pemrograman prosedural (PL) dan SQL

syntax.

Page 8: LAPORAN RESMI DM.doc

PL/SQL adalah fasilitas yang disediakan Oracle sehingga pengguna dapat

memanfaatkan konsep pemrograman. Dalam PL/SQL dapat digunakan perintah

untuk memanipulasi data yang ada dalam database Oracle. PL/SQL membentuk

pemrograman terstruktur dalam memproses data. Beberapa kelebihan PL/SQL

dalam database Oracle :

1. PL/SQL dapat digunakan di server sehingga client hanya dapat mengakses

didalam server

2. Penggunaan PL/SQL mudah dimengerti oleh setiap pengguna

3. PL/SQL dapat didesain khusus untuk database Oracle dalam menggunakan

program aplikasi.

2.6.1 Macam-macam Tipe Data pada PL/SQL

Selain tipe data yang ada pada oracle SQL, PL/SQL menyediakan

beberapa tambahan tipe data yang dapat dideklarasikan sebagai berikut :

Tabel 2.2. Macam-macam tipe data pada PL/SQL

Tipe Data Penjabaran

CHAR(n) Data karakter dengan panjang tetap. Nilai n maksimum adalah 32767.

Nilai n minimum dan juga nilai default adalah 1.

VARCHAR2(n) Sama seperti char tipedata ini dapat digunakan untuk alphanumeric dan

dapat menampung sampai 4000 bytes (4 kb).

NUMBER [(p[,s])] Tipe data numeric dengan P angka penting dan sejumlah S angka

penting dibelakang koma. Nilai P adalah integer dengan nilkai

maksimal 38 dan nilai S berada pada rentang -84 sampai dengan 127.

Nilai S negative berarti pembulatan sampai dengan 105 terdekat.

FLOAT Turunan dari NUMBER. Prsisi sampai dengan 38 digit.

DOUBLE PRECISION Sama dengan FLOAT.

DATE Data tanggal waktu. Nilai yang valid adalah antara 1 Januari 4712 SM

sampai dengan 31 Desember 9999

REAL Turunan dari NUMBER. Presisi sampai dengan 18 digit.

DEC [(p[,s])] Sama dengan NUMBER [(p[,s])]

DECIMAL [(p[,s])] Sama dengan NUMBER [(p[,s])].

INTEGER [(n)] Sama dengan NUMBER [(n,0)]

INT [(n)] Sama dengan NUMBER [(n,0)]

SMALLINT Sama dengan NUMBER [(n,0)]

Page 9: LAPORAN RESMI DM.doc

BINARY_INTEGER Tipe variable yang digunakan menyimpan mulai dari 0 s/d

2.147.483.647

NATURAL Bagian dari binary integer, mampu menyimpan mulai dari 0 s/d

2.147.483.647. tipe data ini tidak boleh bernilai NULL.

POSITIVE Tipe variable yang digunakan menyimpan mulai dari 0 s/d

2.147.483.647

POSITIVEN Bagian dari binary integer, mampu menyimpan mulai dari 0 s/d

2.147.483.647. tipe data ini tidak boleh bernilai NULL

SIGNTYPE Tipe data bilangan yang bernilai -1, 0 atau 1

PLS_INTEGER Bilangan integer dengan rentang nilai -21473647 sampai -21473647

VARCHAR(n) Sama dengan VARCHAR2

STRING Sama dengan VARCHAR2

CHARACTER2(n) Sama dengan CHAR2

LONG Data karakter dengan panjang tidak tetap. Nilai n maksimum sama

dengan 32760 byte

NCHAR Data karakter dengan panjang tidak tetap. Nilai n maksimum sama

dengan 32760 byte. Maksimum bergantung pada default national

character set yang dipakai. Nilai default adalah 1.

2.6.2 Operator pada PL/SQL

Operator-operator SQL statement juga berlaku pada PL/SQL. Berikut ini

adalah macam-macam operator pada PL/SQL.

Tabel 2.3. Macam-macam operator pada PL/SQL

Operator Operasi**, NOT Pemangkatan dan negasi logika

+, - Tanda positif dan negatif

*, / Perkalian dan pembagian

+, -, || Penjumlahan., pengurangan dan konkatinasi

=, <, >, <=, >=, <>, !=, IS NULL, LIKE, BETWEEN, IN

Perbandingan

AND Konjungsi

OR inklusi

2.6.3 Mencetak keluaran pada PL/SQL

Untuk mencetak sebuah nilai pada layar SQL*Plus dapat digunakan

procedure PUT, PUT_LINE dan NEW_LINE yang terdapat dalam package

DBMS_OUTPUT. Package ini merupakan salah satu package yang telah built in

pada Oracle.

Page 10: LAPORAN RESMI DM.doc

Procedure PUT dan PUT_LINE membutuhkan sebuah argumen berupa

NUMBER, VARCHAR2 ataupun DATE. Kedua procedure tersebut akan

menyimpan argumen tersebut ke dalam buffer dan akan ditampilkan di layar bila

procedure tersebut dijalankan.

Procedure NEW_LINE tidak membutuhkan argumen apapun. Procedure

ini berfungsi untuk menyimpan karakter new line ke dalam buffer.

Namun sebelum procedure tersebut dijalankan, harus dijalankan perintah

“SET SERVEROUTPUT ON” untuk mengaktifkan pencetakan ke layar dengan

menggunakan procedure yang ada pada package DBMS_OUTPUT.

SET SERVEROUTPUT <ON|OFF> [SIZE n] [FOR[MAT]      <WRA[PPED] | WOR[D_WAPPED] | TRU[NCATED]]

Pilihan SIZE n bertujuan untuk menentukan jumlah byte maksimum yang

dapat ditampung oleh buffer. Nilai n ini tidak boleh kurang dari 2000 dan tidak

boleh lebih dari 1.000.000. Nilai default-nya 2000. pilihan format bertujuan untuk

menentukan format keluaran. WRAPPED akan melanjutkan bagian yang tidak

mencukupi dari suatu baris ke baris yang  baru. Pilihan TRUNCATE akan

memotong bagian yang melampaui ukuran satu baris tepat pada karakter yang

berada setelah batas maksimum baris. Ukuran satu baris, yakni jumlah karakter

maksimum dalam satu baris, ditentukan oleh sistem variabel LINESIZE.

2.6.4 Struktur blok PL/SQL

Struktur PL/SQL mirip dengan struktur bahasa pascal atau delphi yang

menggunakan struktur blok, sehingga akan mempermudah pengertian dalam

pemrograman dengan PL/SQL. Struktur Blok berisi perintah SQL dengan kondisi

yang berbeda. Perintah PL/SQL dapat menangani kesalahan saat dijalankan.

Setiap pengetikan dengan menggunakan PL/SQL dalam SQL*Plus selalu diakhiri

dengan tanda /(slash). Sintaks penggunaan PL/SQL adalah sebagai berikut :

[DECLARE     ...]    DECLARATION SECTIONBEGIN     ...     EXECUTABLE SECTION[EXCEPTION     ...]    EXCEPTION SECTIONEND;

Page 11: LAPORAN RESMI DM.doc

Struktur diatas dapat dijelaskan sebagai berikut :

1. Bagian judul (header)

Bagian ini hanya digunakan jika PL/SQL diberikan nama, misalnya untuk

prosedur atau fungsi. Bagian ini berisi nama blok,daftar parameter, dan

pengembalian hasil (return) jika blok adalah fungsi.

2. Bagian deklarasi (declaration)

Bagian ini untuk membuat deklarasi mengenai semua variabel dan

konstanta yang direferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini

dimulai dengan perintah DECLARE. Jika tidak ada variabel atau konstanta yang

ingin dideklarasikan bagian ini boleh dihilangkan, bersifat optional.

3. Bagian eksekusi (execution)

Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis.

Bagian eksekusi ini harus dimulai dengan perintah BEGIN.

4. Bagian perkecualian (exception)

Bagian ini memuat cara menangani kesalahan-kesalahan (error) pada

waktu eksekusi program PL/SQL, bersifat optional. Jika program tidak memuat

cara menangani kesalahan, bagian ini boleh dihilangkan.Setiap pernyataan

PL/SQL harus diakhiri dengan tanda titik koma(;) dan semua program PL/SQL

harus diakhiri dengan perintah END.

Page 12: LAPORAN RESMI DM.doc

BAB III

PENGENALAN PL/SQL DAN TIPE DATA

Karena pada SQL tidak mendukung pemrograman secara prosedural,

maka dikembangkanlah PL/SQL. PL merupakan kependekan dari Procedural

Language. PL/SQL mengkombinasikan kekuatan dan kefleksibilitasan SQL

dengan pemrograman prosedural.

8.1 Pernyataan Kondisi FOR–LOOP

Struktur perulangan FOR-LOOP digunakan untk menghasilkan perulangan

sejumlah sekali tanpa penggunaan kondisi apapun.

Struktur ini menyebabkan aksi diulangi sejumlah beberapa kali (tertentu).

SQL : SET SERVEROUTPUT ON;

DECLARE

I NUMBER;

BEGIN

FOR I IN 1..6 LOOP

DBMS_OUTPUT.PUT_LINE (TO_CHAR(I*2-1));

END LOOP;

END;

/

Penjabaran: Atur serveroutput dalam keadaan aktif.

Deklarasikan variabel I dengan tipe data Number.

Untuk nilai variabel I dalam 1 sampai 6 baris lakukan perulangan serta cetak

hasilnya pada layar dan ubah dalam bentuk CHAR

:

variabel I dikalikan 2 dikurangi 1.

Hasil percobaan :

Page 13: LAPORAN RESMI DM.doc

Gambar 3.1. Tampilan pernyataan kondisi FOR – LOOP pada cmd3.2 Pernyataan Kondisi WHILE–LOOP

Perintah WHILE-LOOP akan terus melakukan iterasi (memproses baris

perintah secara berulang) selama kondisi bernilai benar.

SQL : SET SERVEROUTPUT ON

DECLARE

I NUMBER;

BEGIN

FOR I IN 1..6 LOOP

DBMS_OUTPUT.PUT(TO_CHAR(I*2-1));

END LOOP;

DBMS_OUTPUT.NEW_LINE;

END;

/

Penjabaran : Atur serveroutput dalam keadaan aktif.

Deklarasikan variabel I dengan tipe data Number.

Untuk nilai variabel I dalam 1 sampai 6 baris lakukan perulangan serta cetak

hasilnya pada layar dan ubah dalam bentuk CHAR : variabel I

dikalikan 2 dikurangi 1.

Cetak hasilnya dalam satu baris.

Hasil percobaan :

Gambar 3.2. Tampilan pernyataan kondisi WHILE - LOOP pada cmd

Page 14: LAPORAN RESMI DM.doc

BAB IV

CURSOR

Blok PL/SQL tidak memungkinkan untuk menangani query keluaran lebih

dari satu baris (record) karena variabel penampung harus mempunyai sebuah

nilai. Karena itu, diperlukan sebuah Cursor untuk menampung semua kondisi

dari keluaran sebuah query. Cursor merupakan suatu variabel yang digunakan

untuk menampung hasil query yang terdiri atas lebih dari satu row atau record.

Cursor dapat diilustrasikan sebagai penampung sekaligus pointer atas hasil

eksekusi query. Pada dasarnya perintah “SELECT” pada PL/SQL merupakan

sebuah cursor. Terdapat dua macam cursor, yaitu Cursor eksplisit dan Cursor

implisit.

4.1 Membuat Database Baru

4.1.1 Membuat user baru

Berikut ini adalah langkah-langkah untuk membuat user baru di Oracle :

1. Klik START – pilih RUN – ketik CMD – OK

2. Ketik sqlplus, untuk username ketik : sys as sysdba dan untuk password

ketik : irwan

3. Setelah berhasil login dengan username dan password diatas, kemudian

buat user baru. Caranya sebagai berikut:

SQL : CREATE USER “1412080302” IDENTIFIED BY IRWAN;

Penjabaran : Buat user “1412080302” yang diidentifikasi dengan password

‘irwan’

4. Langkah selanjutnya adalah memberikan hak akses kepada user yang baru

dibuat agar dapat login dan membuat tabel. Caranya sebagai berikut:

SQL : GRANT CONNECT, RESOURCE TO “1412080302”;

Penjabaran : Ijinkan hak akses koneksi, resource pada user “1412080302”

5. Setelah user baru selesai dibuat dan diberikan hak akses kepada user

tersebut, ketikkan:

SQL : DISCONNECT;

Penjabaran : Putuskan koneksi

Page 15: LAPORAN RESMI DM.doc

Hal ini dilakukan agar dapat keluar dari user sistem dan dapat login

menggunakan user baru saja dibuat (1412080302).

Hasil percobaan :

Gambar 4.1. Tampilan langkah-langkah membuat user baru di Oracle

4.1.2 Login menggunakan user yang telah dibuat

Lewat web browser dengan alamat: http://batman-9425ecb0:5560/isqlplus,

lakukan login pada user baru yang telah dibuat pada langkah sebelumnya,

username : 14120080302 dan password : irwan

Hasil percobaan :

Gambar 4.2. Tampilan login iSQL*Plus dengan user “1412080302” pada web browser

Page 16: LAPORAN RESMI DM.doc

Jika login sukses maka akan muncul halaman seperti berikut:

Gambar 4.3. Tampilan halaman iSQL*Plus dengan user “1412080302” pada web browser

4.1.3 Membuat tabel

Tabel bisa diartikan sebagai penampung data yang telah dimasukkan

kedalam database.

4.1.3.1 Membuat tabel supplier

SQL : CREATE TABLE SUPPLIER (ID_SUPPLIER VARCHAR2 (10), NAMA

VARCHAR2 (50), NO_TELP VARCHAR2 (15), ALAMAT VARCHAR2

(50));

Penjabaran : Buat tabel dengan nama supplier, dengan kolom id_supplier yang

bertipe data varchar2 dan panjang karakter 10, kolom nama yang

bertipe data varchar2 dan panjang karakter 50, kolom no_telp yang

bertipe data varchar2 dan panjang karakter 15, kolom alamat yang

bertipe data varchar2 dan panjang karakter 50.

Hasil percobaan :

Gambar 4.4. Tampilan pembuatan tabel supplier

Page 17: LAPORAN RESMI DM.doc

Setelah selesai membuat tabel, untuk memeriksa keberadaan tabel tersebut

digunakan query sebagai berikut:

SQL : SELECT * FROM user_catalog;

Penjabaran : Ambil seluruh data dari tabel user_catalog.

Hasil percobaan :

Gambar 4.5. Tampilan keberadaan tabel supplier di tabel user_catalog

Untuk melihat deskripsi mengenai struktur tabel yang sudah dibuat,

dugunakan query berikut ini:

SQL : DESC SUPPLIER;

Penjabaran : Tampilkan struktur tabel supplier.

Hasil percobaan :

Gambar 4.6. Tampilan struktur tabel supplier

Memasukkan data kedalam database merupakan sebuah tujuan utama

pembuatan tabel, maka untuk memasukkan data-data tersebut dilakukan query

berikut ini:

SQL : INSERT INTO supplier VALUES('SP-001', 'PT.Sidogiri',

'022-8768509', 'Jl. Ruwet Gg. Buntet No. 34 Bandung');

Penjabaran : Tambahkan data kedalam tabel supplier dengan nilai 'SP-001',

'PT.Sidogiri', '022-8768509', 'Jl. Ruwet Gg. Buntet No. 34 Bandung'.

Page 18: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.7. Tampilan penambahan data pada tabel supplier

Setelah proses penambahan data selesai, untuk mengecek isi tabel lakukan

perintah sebagai berikut:

SQL : SELECT * FROM supplier;

Penjabaran : Ambil seluruh data dari tabel supplier.

Hasil percobaan :

Gambar 4.8. Tampilan semua data dari tabel supplier

Page 19: LAPORAN RESMI DM.doc

4.1.3.2 Membuat tabel buku

SQL : CREATE TABLE BUKU ( ID_BUKU VARCHAR2(10), ID_JENIS

VARCHAR2(5), ID_SUPPLIER VARCHAR2(10), JUDUL

VARCHAR2(100), PENGARANG VARCHAR2(60), HARGA

NUMBER(7,2), STOCK NUMBER (3));

Penjabaran : Buat tabel buku dengan kolom id_buku yang bertipe data varchar2

dan panjang karakter 10, id_jenis yang bertipe data varchar2 dan

panjang karakter 5, id_supplier yang bertipe data varchar2 dan

panjang karakter 10, judul yang bertipe data varchar2 dan panjang

karakter 100, pengarang yang bertipe data varchar2 dan panjang

karakter 60, harga yang bertipe data number dan panjang karakter

7,2, stock yang bertipe data number dan panjang karakter 3.

Hasil percobaan :

Gambar 4.9. Tampilan pembuatan tabel buku

Setelah selesai membuat tabel, untuk memeriksa keberadaan tabel tersebut

digunakan query sebagai berikut:

SQL : SELECT * FROM user_catalog;

Penjabaran : Ambil seluruh data dari tabel user_catalog.

Page 20: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.10. Tampilan keberadaan tabel buku di tabel user_catalog

Untuk melihat deskripsi mengenai struktur tabel yang sudah dibuat,

dugunakan query berikut ini:

SQL : DESC buku;

Penjabaran : Tampilkan struktur tabel buku.

Hasil percobaan :

Gambar 4.11. Tampilan struktur tabel buku

Memasukkan data kedalam database merupakan sebuah tujuan utama

pembuatan tabel, maka untuk memasukkan data-data tersebut dilakukan query

berikut ini:

SQL : INSERT INTO buku VALUES('BK-001', 'IT', 'SP-002', '10

Langkah Belajar Logika dan Algoritma Menggunakan

Bahasa C++', 'Ema Utami', 27375, 10);

Penjabaran : Tambahkan data kedalam tabel buku dengan nilai 'BK-001', 'IT', 'SP-

002', '10 Langkah Belajar Logika dan Algoritma Menggunakan

Bahasa C++', 'Ema Utami', 27375, 10.

Page 21: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.12. Tampilan penambahan data pada tabel buku

Setelah proses penambahan data selesai, untuk mengecek isi tabel lakukan

perintah sebagai berikut:

SQL : SELECT * FROM buku;

Penjabaran : Ambil seluruh data dari tabel buku.

Page 22: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.13. Tampilan semua data pada tabel buku

4.1.4 Export user

Setelah membuat dan manambahkan data pada tabel supplier dan tabel

buku, kita harus melakukan export user. Hal ini dilakukan agar data user yang

barusan dibuat dapat digunakan pada praktikum selanjutnya. Berikut ini adalah

langkah-langkah untuk export user :

1. Klik START – pilih RUN – ketik CMD – OK

2. Ketik perintah “EXP” kemudian tekan enter

3. Masukkan username: 1412080302 dan password : irwan

4. Muncul perintah “Enter array fetch buffer size”, maka ketikkanlah nilai

default yang sudah ada yaitu 4096 kemudian enter. Memasukkan ukuran

buffer fetch array

5. Perintah “Export file” merupakan perintah untuk memberi nama file

penampung data hasil eksport. Maka isikan saja, contoh : d:\irwan.dmp

kemudian tekan enter

6. Berikutnya akan muncul pertanyaan,”(2)U<sers>, or (3)T<ables>”, ini

berarti apakah kita ingin mengeksport data user ataukah tabel, ketikkan U,

kemudian tekan enter

7. Kemudian muncul pertanyaan “Export grants <yes/no>”, ini artinya untuk

mengeksport hak akses yang dimiliki user tersebut, ketikkan Y dan tekan

enter

Page 23: LAPORAN RESMI DM.doc

8. Kemudian muncul pertanyaan “Export table data <yes/no>”, ini artinya untuk

eksport semua data tabel, ketik Y dan tekan enter

9. Lalu muncul pertanyaan yang terakhir yaitu “Compres extents <yes/no>”,

ketik Y dan tekan enter

10. Tunggu hingga proses selesai. Bila proses eksport tidak ada pesan error, dan

muncul keterangan “Export terminated successfully without warnings”, ini

berarti proses eksport telah sukses dilaksanakan.

Hasil percobaan :

Gambar 4.14. Tampilan langkah-langkah export user

11. Periksa pada d:\irwan.dmp apakah file hasil eksport tadi ada, jika ada maka

artinya telah berhasil disimpan.

Page 24: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.15. Tampilan keberadaan file irwan.dmp di drive D

4.2 Membuat Cursor Implisit dan Eksplisit

4.2.1 Cursor implisit

Cursor implisit merupakan perintah SELECT statement dengan klausa

INTO yang terdapat didalm blok PL/SQL dan harus menghasilkan satu baris

record.

SQL : SET SERVEROUTPUT ON;

DECLARE

v_idbuku buku.id_buku%TYPE:='&id_buku';

v_idjenis buku.id_jenis%TYPE;

v_idsupplier buku.id_supplier%TYPE;

v_namasupplier supplier.nama%TYPE;

v_judul buku.judul%TYPE;

v_pengarang buku.pengarang%TYPE;

v_harga buku.harga%TYPE;

v_stok buku.stock%TYPE;

BEGIN

SELECT b.id_buku, b.id_jenis, b.id_supplier, s.nama,

b.judul, b.pengarang, b.harga, b.stock INTO

v_idbuku, v_idjenis, v_idsupplier, v_namasupplier,

v_judul, v_pengarang, v_harga, v_stok FROM buku b,

Page 25: LAPORAN RESMI DM.doc

supplier s WHERE b.id_buku = v_idbuku AND

b.id_supplier = s.id_supplier;

DBMS_OUTPUT.PUT_LINE('Kode buku = '||v_idbuku);

DBMS_OUTPUT.PUT_LINE('Kode jenis= '|| v_idjenis);

DBMS_OUTPUT.PUT_LINE('Kode supplier = '||

v_idsupplier);

DBMS_OUTPUT.PUT_LINE('Nama supplier= '||

v_namasupplier);

DBMS_OUTPUT.PUT_LINE('Judul buku = '|| v_judul);

DBMS_OUTPUT.PUT_LINE('Pengarang = '|| v_pengarang);

DBMS_OUTPUT.PUT_LINE('Harga = Rp. ' || v_harga);

DBMS_OUTPUT.PUT_LINE('Stok = ' || v_stok);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('Tidak ada buku dengan kode = '

||v_idbuku);

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE('Data buku yang ditemukan lebih

dari 1 baris');

END;

/

Penjabaran : Atur serveroutput dalam keadaan aktif. Deklarasikan variabel

v_idbuku, v_idjenis, v_idsupplier, v_judul, v_pengarang, v_harga,

v_stok dengan tipe datanya sama dengan tipe data kolom id_buku,

id_jenis, id_supplier, judul, pengarang, harga, stock pada tabel buku,

variabel v_namasupplier dengan tipe datanya sama dengan tipe data

kolom nama pada tabel supplier. Jalankan ambil data kolom id_buku

pada tabel b, kategori pada tabel b, id_supplier pada tabel b, nama

pada tabel s, judul pada tabel b, pengarang pada tabel b, harga pada

tabel b, stock pada tabel b kedalam variabel v_idbuku, v_idjenis,

v_idsupplier, v_namasupplier, v_judul, v_pengarang, v_harga,

v_stok dari tabel buku yang dialiaskan dengan nama b, supplier yang

dialiaskan dengan nama s, dimana nilai kolom id_buku pada tabel b

sama dengan nilai variabel v_idbuku dan nilai kolom id_supplier

Page 26: LAPORAN RESMI DM.doc

pada tabel b sama dengan nilai kolom id_supplier pada tabel s. Cetak

pada layar ‘Kode buku’ sama dengan nilai variabel v_idbuku, ‘Kode

jenis’ sama dengan nilai variabel v_idjenis, ‘Kode supplier’ sama

dengan nilai variabel v_idsupplier, ‘Nama supplier’ sama dengan

nilai variabel v_namasupplier, ‘Judul buku’ sama dengan nilai

variabel v_judul, ‘Pengarang’ sama dengan nilai variabel

v_pengarang, ‘Harga’ sama dengan nilai variabel v_harga, ‘Stok’

sama dengan nilai variabel v_stok. Tampilkan kesalahan atau

peringatan ketika tidak ada data yang ditemukan kemudian cetak

pada layar ‘Tidak ada buku dengan kode’ nilai variabel v_idbuku

yang diinputkan, ketika terlalu banyak baris yang ditemukan

kemudian cetak pada layar ‘Data buku yang ditemukan lebih dari 1

baris.

Hasil percobaan :

Gambar 4.16. Tampilan hasil cursor Implisit

Page 27: LAPORAN RESMI DM.doc

Setelah di klik “Execute”, akan muncul tampilan dibawah ini. Hal ini

dimaksudkan agar kita memasukkan nilai id_buku agar bisa ditampung divariabel

v_idbuku. Lalu klik “Continue” setelah memasukkan nilainya.

Gambar 4.17. Tampilan Input Required untuk memasukkan nilai id_buku

4.2.2 Cursor Eksplisit

Tidak seperti cursor implisit, cursor eksplisit harus dideklarasikan terlebih

dahulu sebelum digunakan.

SQL : SET SERVEROUTPUT ON

DECLARE

v_idbuku buku.id_buku%TYPE:='&id_buku';

v_idjenis buku.id_jenis%TYPE;

v_idsupplier buku.id_supplier%TYPE;

v_namasupplier supplier.nama%TYPE;

v_judul buku.judul%TYPE;

v_pengarang buku.pengarang%TYPE;

v_harga buku.harga%TYPE;

v_stok buku.stock%TYPE;

CURSOR cur_irwan IS

SELECT buku.id_buku, buku.judul, buku.id_supplier,

supplier.nama, buku.id_jenis, buku.pengarang,

buku.harga, buku.stock FROM buku, supplier WHERE

buku.id_buku = v_idbuku AND supplier.id_supplier =

buku.id_supplier;

BEGIN

Page 28: LAPORAN RESMI DM.doc

OPEN cur_irwan;

FETCH cur_irwan INTO v_idbuku, v_judul,

v_idsupplier,v_namasupplier, v_idjenis, v_pengarang,

v_harga, v_stok;

WHILE cur_irwan%found LOOP

DBMS_OUTPUT.PUT_LINE('Kode Buku : ' || v_idbuku);

DBMS_OUTPUT.PUT_LINE('Judul Buku : ' || v_judul);

DBMS_OUTPUT.PUT_LINE('Kode Supplier : ' ||

v_idsupplier);

DBMS_OUTPUT.PUT_LINE('Nama Suplier:'|| v_suplier);

DBMS_OUTPUT.PUT_LINE('Jenis Buku :'|| v_idjenis);

DBMS_OUTPUT.PUT_LINE(Pengarang :' || v_pengarang);

DBMS_OUTPUT.PUT_LINE('Harga Buku : ' || v_harga);

DBMS_OUTPUT.PUT_LINE('Stok Buku : ' || v_stok);

FETCH cur_irwan INTO v_idbuku, v_judul,

v_idsupplier,v_namasupplier,v_idjenis,v_pengarang,

v_harga, v_stok ;

END LOOP;

CLOSE cur_irwan;

END;

/

Penjabaran : Atur serveroutput dalam keadaan aktif. Deklarasikan variabel

v_idbuku, v_idjenis, v_idsupplier, v_judul, v_pengarang, v_harga,

v_stok dengan tipe datanya sama dengan tipe data kolom id_buku,

id_jenis, id_supplier, judul, pengarang, harga, stock pada tabel

buku, variabel v_namasupplier dengan tipe datanya sama dengan

tipe data kolom nama pada tabel supplier. Buat cursor dengan nama

cur_irwan dengan query ambil data kolom id_buku pada tabel

buku, id_jenis pada tabel buku, id_supplier pada tabel buku, nama

pada tabel supplier, judul pada tabel buku, pengarang pada tabel

buku, harga pada tabel buku, stock pada tabel buku dari tabel buku,

supplier dimana nilai kolom id_buku pada tabel buku adalah nilai

variabel v_idbuku yang telah diinputkan dan nilai kolom

id_supplier pada tabel buku sama dengan nilai kolom id_supplier

Page 29: LAPORAN RESMI DM.doc

pada tabel supplier. Jalankan, buka cursor cur_irwan, ambil nilai

cur_irwan masukkan kedalam variabel v_idbuku, v_idjenis,

v_idsupplier, v_namasupplier, v_judul, v_pengarang, v_harga,

v_stok. Ketika cur_irwan ditemukan data ulangi, Cetak pada layar

‘Kode buku’ sama dengan nilai variabel v_idbuku, ‘Kode jenis’

sama dengan nilai variabel v_idjenis, ‘Kode supplier’ sama dengan

nilai variabel v_idsupplier, ‘Nama supplier’ sama dengan nilai

variabel v_namasupplier, ‘Judul buku’ sama dengan nilai variabel

v_judul, ‘Pengarang’ sama dengan nilai variabel v_pengarang,

‘Harga’ sama dengan nilai variabel v_harga, ‘Stok’ sama dengan

nilai variabel v_stok. ambil nilai cur_irwan masukkan kedalam

variabel v_idbuku, v_idjenis, v_idsupplier, v_namasupplier,

v_judul, v_pengarang, v_harga, v_stok. Hentikan perulangan.

Tutup cursor cur_irwan.

Hasil percobaan :

Gambar 4.18. Tampilan hasil cursor eksplisit

Page 30: LAPORAN RESMI DM.doc

4.3 Memperbaiki Blok PL/SQL yang Error

SQL : SET SERVEROUTPUT ON

DECLARE

v_idsupplier supplier.id_supplier%TYPE;

v_nama supplier.nama%TYPE;

v_no_telepon supplier.no_telp%TYPE;

v_alamat supplier.alamat%TYPE;

BEGIN

SELECT id_supplier, nama, no_telp, alamat INTO

v_idsupplier, v_nama, v_no_telepon, v_alamat FROM

supplier WHERE id_supplier = 'SP-002';

IF SQL%NOTFOUND THEN

DBMS_OUTPUT.PUT_LINE('Nama Pemesan TidakDitemukan');

ELSE

DBMS_OUTPUT.PUT_LINE('Daftar Nama Pemesan yang Total

Banquetnya <= 500000 :');

DBMS_OUTPUT.PUT_LINE(v_idsupplier ||' = '|| v_nama);

END IF;

END;

/

Penjabaran : Atur serveroutput dalam keadaan aktif. Deklarasikan variabel

v_idsupplier, v_nama, v_no_telepon, v_alamat yang tipe datanya

sama dengan tipe data kolom id_supplier, nama, no_telp, alamat

pada tabel supplier. Jalankan, ambil data kolom id_supplier, nama,

no_telp, alamat kedalam variabel v_idsupplier, v_nama,

v_no_telepon, v_alamat dari tabel supplier dimana nilai kolom

id_supplier sama dengan ‘SP-002’. Jika query tidak menghasilkan

data maka cetak pada layar ‘Nama Pemesan Tidak Ditemukan’. Jika

kondisi lainnya maka cetak pada layar ‘Daftar Nama Pemesan yang

Total Banquetnya <=500000 :’. Cetak pada layar variabel

v_idsupplier ‘=’ variabel v_nama.

Page 31: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 4.19. Tampilan hasil cursor pada web browser

Page 32: LAPORAN RESMI DM.doc

BAB V

ERROR HANDLING

Setiap kesalahan (error) atau peringatan (warning) yang muncul karena

suatu perintah disebut dengan exception. Bagian exception ini ditujukan untuk

menangani exception handler, sedangkan mekanisme penaanganan exception itu

disebut dengan exception handling.

5.1 Import User

Berikut ini adalah langkah-langkah melakukan import user :

1. Membuka START-RUN-CMD

2. Ketik perintah “imp 1412080302/irwan@orcl” kemudian tekan enter

3. Muncul pertanyaan lokasi file import “Import file : ” maka ketikkan lokasi

file dmp, misal : “d:\irwan.dmp”

4. Muncul “Enter insert buffer size minimum is 8192)?”, isikan angka default

yang dianjurkan yaitu “30720”, kemudian tekan enter

5. Muncul “List contents of import file only?” maka ketikkan “n” kemudian

enter

6. Muncul “Ignore create error due to object existence?”, ketikkan “y”

kemudian enter

7. Muncul “Import Grants?”, ketikkan “y” lalu enter

8. Muncul “Import table data?”, maka ketikkan “y” lalu enter

9. Lalu muncul “Import entire export file?” maka ketikkan “y” lalu enter

10. Apabila tidak ada pesan error,maka proses import telah sukses dilaksanakan.

Kemudian periksa apakah di database oracle kita sudah terdapat file hasil

import tadi.

Page 33: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 5.1. Tampilan langkah-langkah import user

5.2 Penambahan Exception

5.2.1 Membuat tabel stats

SQL : CREATE TABLE stats (symbol CHAR (10), ratio NUMBER

(6));

Penjabaran : Buat tabel stats dengan kolom symbol yang bertipe data char dan panjang

data 10, kolom ratio yang bertipe data number dan panjang data 6

Hasil percobaan :

Gambar 5.2. Tampilan pembuatan tabel stats

5.2.2 Menambahkan exception pada blok PL/SQL

SQL : SET SERVEROUTPUT ON

DECLARE

pe_ratio NUMBER(6);

CURSOR irwan IS SELECT harga FROM buku WHERE

id_jenis='IT';

Page 34: LAPORAN RESMI DM.doc

n NUMBER;

BEGIN OPEN irwan;

FETCH irwan INTO pe_ratio;

WHILE irwan%found LOOP INSERT INTO stats (symbol,

ratio) VALUES ('XYZ', pe_ratio);

COMMIT;

FETCH irwan INTO pe_ratio;

END LOOP;

n := irwan%rowcount;

CLOSE irwan;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE (' tidak ada data');

END;

Penjabaran : Atur serveroutput dalam keadaan aktif. Deklarasikan variabel

pe_ratio dengan tipe data number dan panjang karakter 6, cursor

dengan nama irwan dengan query ambil data kolom harga dari tabel

buku dimana nilai kolom id_jenis sama dengan IT, variabel n dengan

tipe data number. Jalankan, buka cursor irwan. Ambil nilai cursor

irwan masukkan kedalam variabel pe_ratio. Ketika cursor irwan

ditemukan data ulangi tambahkan data ke tabel stats (kolom symbol,

ratio) dengan nilai (‘XYZ’, variabel e_ratio). Jalankan, Ambil nilai cursor

irwan masukkan kedalam variabel pe_ratio. Selesai perulangan.

Variabel n bernilai sama dengan jumlah baris yang ditemukan pada

cursor irwan. Tutup cursor irwan. Tampilkan kesalahan atau

peringatan ketika tidak ada data yang ditemukan kemudian cetak

pada layar ‘Tidak ada data’.

Page 35: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 5.3. Tampilan penambahan exception pada blok PL/SQL

5.2.3 Melihat hasil Exception pada blok PL/SQL

SQL : SELECT * FROM stats;

Penjabaran : Ambil semua data dari tabel stats

Hasil percobaan :

Gambar 5.4. Tampilan semua data pada tabel stats

5.3 Unhandled Exception

Merupakan exception yang menampilkan keterangan kesalahan dan

kesalahan yang tidak ditangani.

SQL : SET SERVEROUTPUT ON

DECLARE

v_id buku.id_buku%TYPE;

v_stok buku.stock%TYPE;

BEGIN

SELECT id_buku, stock INTO v_id, v_stok FROM buku

WHERE stock=’0’;

DBMS_OUTPUT.PUT_LINE (‘Buku yang stoknya nol adalah

buku dengan kode : ‘ || v_id);

EXCEPTION

Page 36: LAPORAN RESMI DM.doc

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘Tidak ditemukan buku yang

stoknya = 0’);

END;

/

Penjabaran : Atur serveroutput dalam keadaan aktif. Deklarasikan variabel

v_idbuku, v_stok dengan tipe datanya sama dengan tipe data kolom

id_buku, stock pada tabel buku. Jalankan, ambil data kolom

id_buku, stock masukkan kedalam variabel v_id, v_stok dari tabel

buku dimana kolom stock sama dengan 0. Cetak pada layar ‘Buku

yang stoknya nol adalah buku dengan kode sama dengan nilai

variabel v_id’. Tampilkan kesalahan atau peringatan ketika tidak

ada data yang ditemukan kemudian cetak pada layar ‘Tidak ada

buku yang stoknya = 0’.

Hasil percobaan :

Gambar 5.5. Tampilan unhandled exception ketika tidak ada stok yang nol

Dalam percobaan tersebut tidak ditemukan stok buku yang nol, maka

memasukkan data buku baru dengan jumlah stok 0.

SQL : INSERT INTO VALUES (‘BK-013’,’IT’,’SP-002’,’Membuat

Game Itu Mudah’,’Irwan’,40000,0);

Penjabaran : Sisipkan baris baru kedalam tabel buku dengan nilai ‘BK-

013’,’IT’,’SP-002’,’Membuat Game itu Mudah’,’Irwan’,40000,0.

Page 37: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 5.6. Tampilan penambahan data baru pada tabel buku

Kemudian untuk melihat penambahan data bisa digunakan query sebagai

berikut:

SQL : SELECT * FROM BUKU;

Penjabaran : Ambil seluruh data dari tabel buku.

Hasil percobaan :

Gambar 5.7. Tampilan semua data tabel buku

Setelah penambahan data dengan nilai stok 0, lalu jalankan lagi perintah

SQL unhandled exception.

Hasil percobaan :

Gambar 5.8. Tampilan unhandled exception ketika ada stok yang nol

Page 38: LAPORAN RESMI DM.doc

BAB VI

STORED PROGRAM

Stored program merupakan sekumpulan blok PL/SQL yang tersimpan

didalam skema database sehingga sewaktu-waktu user dapat mengeksekusi blok

tersebut. Ada dua jenis stored program, yaitu procedure dan function. Procedure

sendiri dibagi menjadi dua macam, yaitu nested procedure dan non nested

procedure. Seperti procedure, function juga dibagi dua macam, nested function

dan non nested function.

6.1 Membuat Function Bilangan Desimal Menjadi Biner

Desimal merupakan bilangan bulat atau pecahan, contoh : bilangan 10.

Sedangkan biner adalah bilangan yang terdiri dari angka 1 dan 0. Berikut ini

adalah langkah-langkah untuk membuat function bilangan desimal menjadi biner :

1. Login pada iSQL*PLUS dengan user yang telah dibuat. Username :

1412080302 dan password : irwan

Hasil percobaan:

Gambar 6.1. Tampilan halaman login iSQL*Plus

2. Setelah sukses login, ketiklah blok PL/SQL seperti dibawah ini, kemudian klik

execute

SQL : CREATE OR REPLACE FUNCTION desimal_biner (kode IN

NUMBER) RETURN VARCHAR2 IS

v_in NUMBER;

Page 39: LAPORAN RESMI DM.doc

v_next NUMBER;

v_hasil VARCHAR2(1000);

BEGIN

v_in := kode;

WHILE v_in > 0 LOOP

v_next := MOD(v_in, 2);

v_hasil := TO_CHAR (v_next) || v_hasil;

v_in := FLOOR (v_in / 2);

END LOOP;

RETURN v_hasil;

END;

/

Penjabaran : Buat atau ganti fungsi dengan nama desimal_biner dengan

variabel kode yang bertipe data number, nilai kembaliannya

bertipe data varchar2 adalah variable v_in dan v_next yang

bertipe data number, variable v_hasil yang bertipe data varchar2

dan panjang karakter 1000.

Mulai program dengan nilai awal variabel v_in adalah kode

ketika nilai variabel v_in lebih besar daripada nol, lakukan

perulangan nilai variabel v_next adalah nilai sisa hasil bagi

(modulus) variabel v_in dan 2, nilai variable v_hasil adalah

ubah ke bentuk karakter variable v_next digabungkan dengan

variable v_hasil. Nilai variable v_in adalah nilai (FLOOR)

variable v_in dibagi 2. Akhiri perulangan. Kembalikan nilai

variable v_hasil. Akhiri program.

Page 40: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 6.2. Tampilan pembuatan function decimal_biner

3. Setelah function sukses dibuat, untuk menguji function itu jalankan query SQL

seperti dibawah ini:

SQL : SELECT desimal_biner (10) from dual;

Penjabaran : Ambil data nilai biner dari angka 10 pada function

decimal_biner dari tabel dual.

Hasil percobaan :

Gambar 6.3. Tampilan nilai biner dari angka 10

Page 41: LAPORAN RESMI DM.doc

BAB VII

TRIGGER

Trigger merupakan blok PL/SQL yang memiliki fungsi hampir sama

dengan procedure maupun function, hanya saja, jika procedure atau function

dijalankan secara eksplisit lewat pemanggilan procedure atau function tersebut,

sedangkan untuk trigger, dijalankan secara eksplisit melelui perintah INSERT,

DELETE atau UPDATE.

7.1 Trigger Update

SQL : CREATE OR REPLACE TRIGGER update_id_jenis_irwan

BEFORE INSERT OR UPDATE OF ID_JENIS ON JENIS

FOR EACH ROW

BEGIN

UPDATE BUKU

SET ID_JENIS = NVL(:NEW.ID_JENIS,0) where

ID_JENIS = :old.ID_JENIS ;

END;

/

Penjabaran : Buat atau ganti trigger dengan nama update_id_jenis_irwan

sebelum memasukkan atau merubah data pada kolom id_jenis pada

tabel jenis untuk setiap barisnya. Lakukan eksekusi ubah pada tabel

buku atur id_jenis sama dengan inputan (id_jenis baru) pada

id_jenis yang lama.

Hasil Percobaan :

Gambar 7.1. Tampilan pembuatan TRIGGER update_id_jenis_irwan

Page 42: LAPORAN RESMI DM.doc

Sebelum membandingkannya dengan nilai yang baru, lihat terlebih dahulu

tabel jenis dan tabel buku untuk membandingkannya.

SQL : SELECT * FROM JENIS ;

Penjabaran : Ambil semua data dari tabel jenis

Hasil Percobaan :

Gambar 7.2. Tampilan data pada tabel jenis

SQL : SELECT * FROM BUKU ;

Penjabaran : Ambil semua data dari tabel buku

Hasil Percobaan :

Gambar 7.3. Tampilan data pada tabel buku

Kemudian ubah nilai kolom id_jenis untuk melihat hasilnya. Berikut ini

querynya :

SQL : UPDATE JENIS SET ID_JENIS = 'IRW' WHERE ID_JENIS =

'UM';

Penjabaran : Rubah tabel jenis atur pada kolom id_jenis menjadi ‘IRW’ dimana

id_jenis sama dengan ’UM’

Page 43: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 7.4. Tampilan query untuk merubah data pada table jenis

SQL : SELECT * FROM JENIS ;

Penjabaran : Ambil semua data dari tabel jenis;

Hasil percobaan :

Gambar 7.5. Tampilan data pada tabel jenis yang telah diubah

Perubahan bisa dilihat juga pada tabel buku, caranya lakukan query dibawah

ini :

SQL : SELECT * FROM BUKU;

Penjabaran : Ambil semua data dari table buku;

Hasil percobaan :

Gambar 7.6. Tampilan data kolom id_jenis pada tabel buku yang telah diubah

Page 44: LAPORAN RESMI DM.doc

7.2 Trigger Kontrol Stok

SQL : CREATE OR REPLACE TRIGGER STOK_BUKU_IRWAN

BEFORE INSERT OR UPDATE OF STOCK ON BUKU

FOR EACH ROW

BEGIN

IF NOT (:NEW.STOCK <= 100)

THEN

RAISE_APPLICATION_ERROR (-20202, 'MAAF, JUMLAH STOK

YANG ANDA MASUKKAN LEBIH DARI 100. STOK MAKSIMAL HARUS

100..!!');

END IF ;

END;

/

Penjabaran : Buat atau ganti trigger stok_buku_irwan sebelum menambahkan

atau merubah kolom stok pada tabel buku untuk setiap barisnya.

Kemudian jalankan jika stok baru tidak diinputkan kurang atau

sama dengan 100 maka tampilkan pesan error dengan menampilkan

peringatan ‘maaf, jumlah stok yang anda masukkan lebih dari 100.

stok maksimal harus 100..!!’. Program selesai.

Hasil percobaan :

Gambar 7.7. Tampilan pembuatan TRIGGER stok_buku_irwan

Setelah sukses, lakukan query berikut ini:

SQL : INSERT INTO BUKU VALUES('BK-012','TIK','SP-001',

'Membuat Game Itu Mudah',’Irwan','45000','104');

Penjabaran : Tambahkan data kedalam tabel buku dengan nilai (‘BK-012’, ’TIK’,

‘SP 001’, ‘Membuat game itu mudah’, ‘Irwan’, ‘45000’, ‘104’)

Page 45: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 7.8. Tampilan penambahan data buku yang error

Query diatas error karena jumlah stok yang diinputkan lebih dari 100, untuk

melihat hasil yang sukses lakukan query dibawah ini:

SQL : INSERT INTO BUKU VALUES('BK-012','TIK','SP-001',

'Membuat Game Itu Mudah',’Irwan','45000','94');

Penjabaran : Tambahkan data kedalam tabel buku dengan nilai (‘BK-012’,

’TIK’, ‘SP 001’, ‘Membuat game itu mudah’, ‘Irwan’, ‘45000’,

‘94’)

Gambar 7.9. Tampilan penambahan data buku yang benar

Untuk melihat hasilnya, lakukan query seperti biasanya.

SQL : SELECT * FROM BUKU;

Penjabaran : Ambil semua data dari tabel buku

Hasil percobaan :

Gambar 7.10. Tampilan data baru pada tabel buku

Page 46: LAPORAN RESMI DM.doc

BAB VIII

INDEX, VIEW DAN SEQUENCE

Index adalah object schema yang berisi catatan dari nilai-nilai yang

muncul pada satu kolom atau kombinasi kolom di index dari sebuah tabel. Index

dibuat untuk mempercepat pengaksesan data pada suatu tabel.

View adalah sebuah virtual tabel yang dibangun dari satu atau beberapa

tabel yang sudah ada, baik berdasarkan kondisi tertentu ataupun tidak. Secara fisik

view tidak menyimpan record seperti pada tabel, tetapi ia menyimpan data berupa

pointer yang menunjukkan ke record yang bersangkutan di dalam tabel.

Sequence merupakan objek database yang digunakan untuk

membangkitkan serangkaian nilai serial yang unik agar dapat dimanfaatkan untuk

primary key dalam sebuah tabel.

8.1 INDEX

8.1.1 Pembuatan INDEX

Disini kita akan membuat tiga buah index, yaitu: index dari tabel supplier,

index dari tabel buku, dan index dari table jenis. Yang pertama adalah membuat

index dari tabel supplier, berikut querynya:

SQL : CREATE INDEX idx_irwan_supplier

ON SUPPLIER (id_supplier,nama);

Penjabaran : Buat index dengan nama idx_irwan_supplier pada tabel supplier,

kolom id_supplier dan nama

Hasil percobaan :

Gambar 8.1. Tampilan pembuatan index pada tabel supplier

Page 47: LAPORAN RESMI DM.doc

Setelah index dari tabel supplier dibuat, yang kedua adalah index dari tabel

buku.

SQL : CREATE INDEX idx_irwan_buku

ON BUKU(id_buku,judul,pengarang);

Penjabaran : Buat index dengan nama idx_irwan_buku pada tabel buku, kolom

id_buku, judul dan pengarang.

Hasil percobaan :

Gambar 8.2. Tampilan pembuatan index pada tabel buku

Dan yang terakhir adalah index dari tabel jenis.

SQL : CREATE INDEX idx_irwan_jenis ON jenis (id_jenis,

kategori);

Penjabaran : Buat index dengan nama idx_irwan_jenis pada tabel jenis, kolom

id_jenis dan kategori

Hasil percobaan :

Gambar 8.3. Tampilan pembuatan index pada tabel jenis

8.1.2 Memeriksa keberadaan INDEX

Untuk mambuat memeriksa keberadaan index, sebaiknya login terlebih

dahulu sebagai SYSDBA dengan username : 1412080302 as SYSDBA dan

password : irwan.

Hasil percobaan :

Gambar 8.4. Tampilan login dengan username 1412080302 as sysdba pada cmd

Page 48: LAPORAN RESMI DM.doc

Karena semua index yang telah dibuat berada di tabel dba_indexes, maka

berikut ini query untuk memeriksa keberadaan index yang telah kita buat di tabel

dba_indexes tersebut.

SQL : SELECT index_name, index_type, status FROM dba_indexes

WHERE owner=’1412080302’;

Penjabaran : Ambil data kolom index_name, index_type, status dari tabel

dba_indexes dimana pemilik database-nya adalah ‘1412080302’.

Hasil percobaan :

Gambar 8.5. Tampilan keberadaan index milik user 1412080302

8.2 VIEW

8.2.1 Pembuatan VIEW

Sebelum kita membuat VIEW, sebaiknya login terlebih dahulu sebagai

SYSDBA dengan username : 1412080302 as SYSDBA dan password : irwan.

Hasil percobaan :

Gambar 8.6. Tampilan login dengan username 1412080302 as sysdba pada cmd

Setelah sukses login, ketiklah query dibawah ini:

SQL: CREATE VIEW “1412080302”.buje ( id_buku, id_jenis,

judul, kategori) AS SELECT b.id_buku, b.id_jenis,

b.judul, j.KATEGORI FROM “1412080302”.BUKU b,

“1412080302”.JENIS j WHERE b.id_jenis=j.id_jenis;

Penjabaran: Buat view user “1412080302” dengan nama buje dengan kolom

id_buku, id_jenis, judul, kategori sebagai ambil data kolom

id_buku pada tabel b, id_jenis pada tabel b, judul pada tabel b,

Page 49: LAPORAN RESMI DM.doc

kategori pada tabel j dari user “1412080302” tabel buku alias b,

user “1412080302” tabel jenis alias j dimana nilai kolom id_jenis

pada tabel b sama dengan nilai kolom id_jenis pada tabel j.

Hasil percobaan :

Gambar 8.7. Tampilan pembuatan view buje

8.2.2 Memeriksa keberadaan VIEW

SQL : SELECT * FROM user_catalog;

Penjabaran : Ambil seluruh data dari tabel user_catalog

Hasil percobaan :

Gambar 8.8. Tampilan keberadaan view buje

Page 50: LAPORAN RESMI DM.doc

Sedangkan untuk melihat isi dari view buje itu sendiri, ketikkan query

berikut ini.

SQL : SELECT * FROM buje;

Penjabaran : Ambil seluruh data dari view buje

Hasil percobaan :

Gambar 8.9. Tampilan isi data view buje

8.3 SEQUENCE

8.3.1 Pembuatan SEQUENCE

Berikut ini adalah query untuk membuat sequence dari table buku:

SQL : CREATE SEQUENCE seq_buku_idbuku INCREMENT BY 1 START

WITH 013 MAXVALUE 999;

Penjabaran : Buat sequence seq_buku_idbuku dengan nilai penambahan 1 yang

dimulai pada angka ‘013’ dan nilai tertinggi adalah 999.

Hasil percobaan :

Gambar 8.10. Tampilan pembuatan SEQUENCE seq_buku_idbuku

Selain kita membuat sequence dari tabel buku, kita juga akan membuat

sequence dari tabel supplier.

SQL : CREATE SEQUENCE seq_supplier_idsupplier INCREMENT BY 1

START WITH 005 MAXVALUE 999;

Page 51: LAPORAN RESMI DM.doc

Penjabaran : Buat sequence seq_supplier_idsupplier dengan nilai penambahan 1

yang dimulai pada angka 005 dan nilai tertinggi adalah 999.

Hasil percobaan :

Gambar 8.11. Tampilan pembuatan SEQUENCE seq_supplier_idsupplier

8.3.2 Memeriksa dan mengambil informasi SEQUENCE

SQL : SELECT * FROM user_catalog;

Penjabaran : Ambil seluruh data dari tabel user_catalog

Hasil percobaan :

Gambar 8.12. Tampilan keberadaan SEQUENCE

8.3.3 INSERT data tabel menggunakan SEQUENCE

SQL : INSERT INTO buku VALUES (seq_buku_idbuku.NEXTVAL,

‘IT’, ‘SP-004’, ‘Sistem Pakar, ‘Irwan Purdianto’,

20000, 18);

Penjabaran : Tambahkan data kedalam tabel buku dengan nilai, nilai berikutnya

pada sequence buku_idbuku, ‘IT’, ‘SP-004’, ‘Sistem Pakar’, ’Irwan

Purdianto’, 20000, 18

Page 52: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 8.13. Tampilan penambahan data buku dengan menggunakan SEQUENCE

Untuk melihat hasilnya, lakukan query berikut:

SQL : SELECT * FROM buku;

Penjabaran : Ambil semua data dari tabel buku.

Hasil percobaan :

Gambar 8.14. Tampilan semua data pada tabel buku

Sedangkan untuk menambahkan data untuk supplier, lakukan query:

SQL : INSERT INTO

supplier VALUES (seq_supplier_idsupplier.NEXTVAL, ’PT.

Lackers, ‘0356-611928’, ’Jl. Raya Montong-parengan’);

Penjabaran : Tambahkan data kedalam tabel supplier dengan nilai, nilai

berikutnya pada sequence seq_supplier_idsupplier, ‘PT. Lackers’,

‘0356-611928’, ‘Jl. Raya Montong-parengan’.

Hasil percobaan :

Gambar 8.15. Tampilan penambahan data supplier dengan menggunakan SEQUENCE

Page 53: LAPORAN RESMI DM.doc

Untuk melihat hasilnya, lakukan query berikut :

SQL : SELECT * FROM supplier;

Penjabaran : Ambil seluruh data dari tabel supplier.

Hasil percobaan :

Gambar 8.16. Tampilan semua data pada tabel supplier

Page 54: LAPORAN RESMI DM.doc

BAB IX

SIMPLE REPORT

Simple Report pada dasarny dibuat karena adanya keinginan untuk

menyimpan hasil PL/SQL dalam bentuk file (softcopy) kemudian dapat di cetak

di atas kertas (hardcopy). Selain dalam format, .txt, .doc, report juga bisa

disimpan dalam bentuk HTML. Sangat mudah untuk mengubah script dari mode

karakter ke html, karena seluruh tag SQL*Plus dapat dikonversi ke tag HTML

tanpa mengubah kode.

9.1 Menyimpan dan Mencetak Report

Langkah-langkah membuat report pada Oracle :

1. Ketik syntax seperti dibawah ini pada notepad.

SET PAGESIZE 300

SET LINESIZE 500

SET HEADSEP ON

SET RECSEP OFF

SET FEEDBACK OFF

CLEAR BREAK;

CLEAR COMPUTES;

CLEAR COLUMNS;

BREAK ON id_jenis SKIP 1

COLUMN today NOPRINT NEW_VALUE v_today

COLUMN id_buku FORMAT A10 WORD_WRAPPED

COLUMN judul FORMAT A65 WORD_WRAPPED

COLUMN id_jenis FORMAT A10 WORD_WRAPPED HEADING "JENIS

BUKU"

COLUMN nama FORMAT A30 WORD_WRAPPED HEADING "NAMA

SUPPLIER"

COLUMN alamat FORMAT A40 WORD_WRAPPED HEADING

"ALAMAT SUPPLIER"

Page 55: LAPORAN RESMI DM.doc

COLUMN harga FORMAT 99G999G999D99

COLUMN stock FORMAT 99

REPHEADER "-- Awal Laporan --"

REPFOOTER "-- Akhir Laporan --"

TTITLE LEFT "DAFTAR BUKU" SKIP

"===========================" SKIP 2 LEFT "Pengguna : "

SQL.USER SKIP LEFT "Halaman : " FORMAT 99 SQL.PNO SKIP

LEFT "Tanggal : " FORMAT A20 v_today SKIP LEFT

"===========================" BTITLE LEFT

"________________" SKIP 2

SET DEFINE ON

ACCEPT file_name PROMPT "File penampung hasil report :

"

SPOOL &file_name

SET TERMOUT OFF

SELECT TO_CHAR (SYSDATE, 'DD-MON-YYYY') today,

buku.id_buku, buku.judul, jenis.kategori,

buku.pengarang, supplier.nama, supplier.alamat,

buku.harga, buku.stock FROM buku, supplier, jenis WHERE

buku.id_supplier = supplier.id_supplier AND

buku.id_jenis = jenis.id_jenis;

SPOOL OFF

SET FEEDBACK ON

SET RECSEP WRAPPED

SET TERMOUT ON

Page 56: LAPORAN RESMI DM.doc

2. Kemudian simpan pada direktori C dengan ekstensi *.sql. Misalnya :

irwan.sql

Gambar 9.1. Tampilan letak file irwan.sql

3. Seperti percobaan-percobaan sebelumnya, yaitu membuka START-RUN-

CMD. Ketik sqlplus, login dengan username : 1412080302 as sysdba dan

password : irwan.

Hasil percobaan :

Gambar 9.2. Tampilan login dengan username 1412080302

4. Ketik perintah sebagai berikut :

SQL : @C:\irwan.sql

Penjabaran : Jalankan file irwan.sql pada direktori C

Kemudian ketik lokasi hasil report : C :\irwan.txt

Page 57: LAPORAN RESMI DM.doc

Hasil percobaan :

Gambar 9.3. Tampilan penampungan file irwan.sql ke irwan.txt

5. Buka direktori C:\ untuk memastikan file hasil report telah tersimpan.

Gambar 9.4. Tampilan lokasi file irwan.txt

6. Kemudian buka file tersebut untuk melihat hasil report-nya.

Gambar 9.5. Tampilan report irwan.txt pada notepad

Page 58: LAPORAN RESMI DM.doc

9.2 Membuat Report Output HTML

Langkah-langkah membuat report dengan output HTML pada Oracle :

1. Ketik syntax seperti dibawah ini pada notepad.

SET MARKUP HTML ON SPOOL ON

SET PAGESIZE 300

SET LINESIZE 500

SET HEADSEP ON

SET RECSEP OFF

SET FEEDBACK OFF

CLEAR BREAK;

CLEAR COMPUTES;

CLEAR COLUMNS;

BREAK ON id_jenis SKIP 1

COLUMN today NOPRINT NEW_VALUE v_today

COLUMN id_buku FORMAT A10 WORD_WRAPPED

COLUMN judul FORMAT A65 WORD_WRAPPED

COLUMN id_jenis FORMAT A10 WORD_WRAPPED HEADING

"JENIS BUKU"

COLUMN nama FORMAT A30 WORD_WRAPPED HEADING "NAMA

SUPPLIER"

COLUMN alamat FORMAT A40 WORD_WRAPPED HEADING

"ALAMAT SUPPLIER"

COLUMN harga FORMAT 99G999G999D99

COLUMN stock FORMAT 99

REPHEADER "-- Awal Laporan --"

REPFOOTER "-- Akhir Laporan --"

TTITLE LEFT "DAFTAR BUKU" SKIP

"===========================" SKIP 2 LEFT "Pengguna : "

SQL.USER SKIP LEFT "Halaman : " FORMAT 99 SQL.PNO SKIP

LEFT "Tanggal : " FORMAT A20 v_today SKIP LEFT

"==========================" BTITLE LEFT

"________________" SKIP 2

Page 59: LAPORAN RESMI DM.doc

SET DEFINE ON

ACCEPT file_name PROMPT "File penampung hasil report :

"

SPOOL &file_name

SET TERMOUT OFF

SELECT TO_CHAR (SYSDATE, 'DD-MON-YYYY') today,

buku.id_buku, buku.judul, jenis.kategori,

buku.pengarang, supplier.nama, supplier.alamat,

buku.harga, buku.stock FROM buku, supplier, jenis WHERE

buku.id_supplier = supplier.id_supplier AND

buku.id_jenis = jenis.id_jenis;

SPOOL OFF

SET FEEDBACK ON

SET RECSEP WRAPPED

SET TERMOUT ON

SET MARKUP HTML ON SPOOL OFF;

2. Kemudian simpan pada direktori C dengan ekstensi *.sql. Misalnya :

irwan_html.sql.

Hasil percobaan:

Gambar 9.6. Tampialn letak file irwan_html.sql

3. Seperti percobaan-percobaan sebelumnya, yaitu membuka START-RUN-

CMD. Ketik sqlplus, login dengan username : 1412080302 dan password :

irwan.

Page 60: LAPORAN RESMI DM.doc

Hasil percobaan:

Gambar 9.7. Tampilan login dengan username 1412080302

4. Ketik perintah sebagai berikut :

SQL : @C:\irwan_html.sql

Penjabaran : Jalankan file irwan_html.sql pada direktori C

Kemudian ketik lokasi hasil report : C :\irwan_html.html

Hasil percobaan :

Gambar 9.8. Tampilan penampungan file irwan_html.sql ke irwan_html.html

5. Buka direktori C :\ untuk memastikan file hasil report telah tersimpan.

Hasil percobaan :

Gambar 9.9. Tampilan letak file irwan_html.html

6. Kemudian buka file tersebut untuk melihat hasil report yang telah dibuat.

Hasil percobaan :

Page 61: LAPORAN RESMI DM.doc

Gambar 9.10. Tampilan report irwan_html.html pada web browser

Page 62: LAPORAN RESMI DM.doc

BAB X

USER, PRIVILEGE DAN ROLE

Secara umum operasi-operasi untuk pemakai adalah tiga operasi klasik

yaitu CREATE, ALTER, dan DROP. Tiga operasi klasik ini berlaku bagi objek-

objek hampir semua tipe dalam database (bahkan ke objek bertipe database itu

sendiri).

Salah satu model keamanan dalam penggunaan DBMS kita adalah adanya

privilege (hak). Model keamanan ini biasa diapakai di OS(operating system)

maupun server lainnya.

Role adalah sekumpulan named set of privilege. Operasi-operasi yang

terdapat pada role adalah CREATE, ALTER,  dan DROP, satu operasi SET untuk

pengaktifan ditambah dengan dua operasi GRANT dan REVOKE (seperti untuk

privilege). Role dibuat untuk mempermudah pengelolaan privilege.

10.1 Object Level-Privilege SELECT untuk pengunjung (Guest)

Langkah – langkah membuat user pengunjung :

1. Membuka START RUN CMD.

2. Ketik sqlplus, login dengan username : sys as sysdba dan password : irwan

Gambar 10.1. Tampilan login sebagai sys as sysdba

Page 63: LAPORAN RESMI DM.doc

3. Buatlah user dengan nama irwan_pengunjung

SQL : CREATE USER irwan_pengunjung IDENTIFIED BY irwan;

Penjabaran : Buat user irwan_pengunjung dengan password irwan

Hasil percobaan :

Gambar 10.2. Tampilan membuat user irwan_pengunjung

4. Lalu berikan hak akses pada user baru dibuat agar dapat login dan membuat

tabel

SQL : GRANT CONNECT TO irwan_pengunjung;

Penjabaran : Ijinkan hak akses koneksi pada user irwan_pengunjung

Hasil percobaan:

Gambar 10.3. Tampilan pemberian hak akses ke user irwan_pengunjung

5. Berikan hak akses pada user baru yang telah dibuat untuk melihat tabel buku

yang dimiliki user 1412080302

SQL : GRANT SELECT ON “1412080302”.BUKU TO

irwan_pengunjung;

Penjabaran : Ijinkan hak akses koneksi pada user irwan_pengunjung

Hasil percobaan :

Gambar 10.4. Tampilan pemberian privilege untuk melihat data tabel buku

Page 64: LAPORAN RESMI DM.doc

6. Kemudian login pada iSQL*PLUS dengan username : irwan_pengunjung dan

password : irwan.

Hasil percobaan :

Gambar 10.5. Tampilan login user irwan_pengunjung

7. Lakukan perintah SELECT pada tabel buku.

SQL : SELECT * FROM “1412080302”.buku;

Penjabaran : Ambil seluruh data dari tabel buku pada schema 1412080302

Hasil percobaan :

Gambar 10.6. Tampilan data buku yang dimiliki user 1412080302

Page 65: LAPORAN RESMI DM.doc

8. Lakukan perintah SELECT pada tabel jenis. Terjadi kesalahan, karena user

irwan_pengunjung tidak diberikan privilege untuk tabel jenis.

SQL : SELECT * FROM “1412080302”.jenis;

Penjabaran : Ambil seluruh data dari tabel jenis pada schema 1412080302

Hasil percobaan :

Gambar 10.7. Tampilan error saat mengakses tabel jenis

9. Berikan hak akses pada user baru yang telah dibuat untuk melihat tabel jenis

milik user “1412080302”

SQL : GRANT SELECT ON “1412080302”.jenis TO

irwan_pengunjung;

Penjabaran : Ijinkan hak akses koneksi ke tabel jenis milik user 1412080302

pada user irwan_pengunjung

Hasil percobaan :

Gambar 10.8. Tampilan pemberian privilege pada user irwan_pengunjung

Page 66: LAPORAN RESMI DM.doc

10. Lakukan perintah SELECT pada tabel jenis

SQL : SELECT * FROM “1412080302”.jenis;

Penjabaran : Ambil seluruh data dari tabel jenis pada schema 1412080302.

Hasil percobaan :

Gambar 10.9. Tampilan data pada tabel jenis

11. Untuk menampilkan tabel supplier pada user irwan_pengunjung caranya

sama dengan langkah 9 dan 10.

10.2 Privilege User Administrasi Logistik

Langkah – langkah membuat user administrasi logistik :

1. Seperti percobaan-percobaan sebelumnya, yaitu membuka START

RUN CMD.

2. Ketik sqlplus, login dengan username : sys as sysdba dan password :

praktikum

Hasil percobaan :

Gambar 10.10. Tampilan login sebagai sys as sysdba

Page 67: LAPORAN RESMI DM.doc

3. Kemudian buatlah user dengan nama admin_logistik.

SQL : CREATE USER irwan_logistik IDENTIFIED BY irwan;

Penjabaran : Buat user irwan_logistik dengan password irwan

Hasil percobaan :

Gambar 10.11. Tampilan membuat user irwan_logistik

4. Berikan hak akses agar dapat login pada user yang telah dibuat.

SQL : GRANT CONNECT TO irwan_logistik;

Penjabaran : Ijinkan hak akses koneksi pada user irwan_logistik.

Hasil percobaan :

Gambar 10.12. Tampilan pemberian hak akses ke user irwan_logistik

Page 68: LAPORAN RESMI DM.doc

BAB XI

PENUTUP

11.1 Kesimpulan

Dengan melakukan praktikum-praktikum tersebut dapat Memahami

konsep penggunaan PL/SQL Oracle, mengetahui dan mengerti CURSOR, mampu

menerapkan EXCEPTION dalam PL/SQL di Oracle, mengetahui dan memahami

procedure, mengetahui dan memahami function, mampu mengimplementasikan

procedure dan function dalam pemrograman di Oracle.

Mampu mengimplementasikan trigger dalam Oracle, mengerti manfaat

dan batasan penggunaan index, view dan sequence, mampu mengimplementasikan

simple report dalam Oracle, mampu membuat user pada Oracle, mampu

mengenal obyek dan system privilege, Mampu memberikan privilege pada user,

mampu mengerti tentang roles dan menggunakannya, mampu melakukan

controlling dan removing pada roles.

11.2 Saran

Dengan adanya tulisan ini saya berharap dapat membantu bagi para

mahasiswa atau yang membutuhkan sedikit penjelasan mengenai PL/SQL,

pembuatan procedure, function, membuat report dan trigger pada Oracle.

Selain hal diatas, saya juga ingin menyampaikan untuk Bapak/Ibu Dosen

pengajar maupun pembimbing praktikum Data Mining dan Warehousing ini.

Sebaiknya sebelum melakukan praktikum para mahasiswa diberikan pengarahan

singkat tentang modul yang akan dikerjakan dalam praktikum tersebut, sehingga

para mahasiswa tahu tentang apa yang akan dikerjakan dalam praktikum tersebut.

Saya sadar bahwa laporan ini masih jauh dari kata sempurna masih

membutuhkan kritik dan saran yang membangun dari para pembaca. Demi

kemajuan laporan ini sehingga saya dapat memperbaiki laporan berikutnya.

Page 69: LAPORAN RESMI DM.doc

DAFTAR PUSTAKA

Aris, Kurnia.2009.Belajar Database II.http//www.databaselanjutan.com//main.

Nugroho, Adityo. 2009. Modul Praktikum Basis Data Lanjut. Tuban : Unirow.

Adistya, Rama. 2011. Modul Praktikum Data Mining dan Warehousing. Tuban:

Unirow.

Page 70: LAPORAN RESMI DM.doc

LAMPIRAN