Praktikum 7
SIMPLE REPORT
Tujuan :
1.
Mengetahui dan memahami reporting dalam Oracle
2.
Mengerti manfaat dan batasan penggunaan simple report
3.
Mampu mengimplementasikan simple report dalam Oracle
Alat dan Bahan :
1.
Buku literatur mengenai PL/SQL ORACLE, terutama yang
menggunakan DBMS ORACLE 10g.
2.
Modul praktikum BASIS DATA LANJUT
3.
Modul praktikum DATA MINING DAN WAREHOUSING
Landasan Teori :
1. Mengatur Dimensi Halaman
Dimensi halaman dari keluaran
SQL*Plus dapat diatur melalui system variable PAGESIZE dan LINESIZE. System
variable PAGESIZE menentukan jumlah baris maksimum yang ditampilkan dalam satu
halaman. Sedangkan system variable LINESIZE menentukan jumlah karakter maksimum
yang ditampilkan dalam satu baris. Dengan demikian kedua system variable ini
dapat mengatur tinggi dan lebar dari halaman keluaran SQL*Plus.
Berikut ini ditunjukkan dua
perintah SET untuk menentukan nilai system variable PAGESIZE dan LINESIZE pada
current environment SQL*Plus.
SQL> SET PAGESIZE 12
SQL> SET LINESIZE 60
|
Dengan environment seperti di atas, coba lakukan sebuah
query seperti berikut ini. Query tersebut menampilkan 15 baris string karakter
yang masing-masing panjangnya 60 bytes. Data dictionary DICTIONARY digunakan
sebagai sumber data hanya karena jumlah baris data yang ada pada view tersebut
pasti lebih dari 15 baris.
SQL> SELECT
2
‘*** *$$$$$$$$$$***
*$$$$$$$$$$’||’*** *$$$$$$$$$$’ PAGES
3
FROM DICTIONARY WHERE
ROWNUM<=15;
PAGES
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$ PAGES
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
*$$$$$$$$$$***
*$$$$$$$$$$*** *$$$$$$$$$$
15 row selected
|
Perhatikan hasil query di atas.
Suatu halaman di mulai dengan satu baris kosong. Setelah itu diikuti oleh judul
baris kolom (heading) dan baris garis- bawah judul kolom. Kemudian, dibawahnya
ditampilkan baris-baris data.
Apabila panjang baris judul kolom
(atau baris data) lebih besar dari LINESIZE,
baris tersebut ditampilkan dalam dua baris atau lebih. Apabila
baris-baris yang ditampilkan tidak cukup ditampung dalam satu halaman, akan
dibuat halaman baru yang terdiri atas satu baris kosong, judul kolom,
garis-bawah judul kolom, dan baris-baris data. Demikian seterusnya sampai semua
data ditampilkan. Penutup dari halaman terkahir adalah sebuah baris kosong, dan
atribut-atribut lainnya seperti FEEDBACK dan TIMING. Apabila PAGESIZE diberi
nilai 0 (nol), yang ditampilkan hanya baris-baris data saja tanpa awalan
baris kosong, judul kolom, garis-bawah
judul kolom dan atribut-atribut
lainnya.
Baris kosong yang berada sebelum
baris judul kolom sebenarnya dapat ditentukan jumlahnya dengan mengatur system
variable NEWPAGE. Pada keluaran hasil query di atas, nilai NEWPAGE yang
digunakan adalah satu (default). Perlu diinformasikan juga bahwa Anda dapat
melihat nomor baris yang sedang ditampilkan dari sebuah halaman menggunakan
perintah SHOW LNO. Nomor halaman dapat dilihat dengan perintah SHOW PNO.
Apabila tidak disebutkan secara
khusus, PAGESIZE dan LINESIZE yang digunakan pada pokok-pokok bahasan
berikutnya didalam bab ini adalah 50 dan 65.
a. Menggunakan BREAK
Perintah BREAK dapat digunakkan untuk hal-hal seperti
berikut ini.
Menampilkan hanya satu nilai untuk
beberapa nilai yang sama pada kolom yang ditentukan.
Menambahkan
baris kosong setiap kali nilai dari kolom yang ditentukan berubah.
Mencetak nilai hasil perhitungan untuk
kelompok baris dengan nilai kolom yang sama pada kolom yang ditentukan (lihat
pokok batasan berikutnya).
Bentuk umum perintahnya adalah
sebagai berikut.
BRE[AK][{ON <column|expr|ROW|REPORT>[SKIP n|[SKIP] PAGE]
[NODUP[LICATES]|DUP[LICATES]]}]
|
Nama column tidak boleh mengandung schema dan/atau table.
Untuk kolom- kolom yang menggunakan
format “tab_name,col_name”
di dalam SQL statementnya, sebaiknya berikan kolom
alias pada SQL statement tersebut sehingga nama kolom alias tersebut dapat digunakan
pada perintah BREAK. Jika expr digunakan, break tersebut berlaku jika expr
terdapat pada SQL statement dan tanpa menggunakan kolom alias.
Pilihan ON ROW
digunakan untuk break setiap kali baris berikutnya berbeda dengan baris
sebelumnya. ON REPORT biasanya
digunakan bersamaan dengan kalkulasi untuk
keseluruhan data (lihat perintah COMPUTE pada pokok bahasan berikutnya).
“SKIP n” dapat digunakan untuk
memberikan baris kosong sebanyak n baris setiap masuk ke break berikutnya.
Apabila SKIP PAGE digunakan keluaran
diceyak di halaman berikutnya setiap kali break terjadi. NODUP[LICATES] digunakan apabila nilai-nilai yang duplikat tida
ingin dicetak. Pilihan ini adalah default. DUP[LICATES] digunakan
apabila nilai-nilai yang
duplikat ingin dicetak.
Berikut ini diberikan sebuah contoh penggunaan perintah
BREAK untuk kolom bayar. Sebuah baris kosong dicetak setiap kali break
terjadi.
SQL>
BREAK ON bayar SKIP 1
SQL>
SELECT nim,prodi,nama,bayar FROM mahasiswa ORDER BY
nim;
NIM NAMA PRODI BAYAR
30107001
ANGGI NOVEMBRA MI 2000000
30107003 WIDO KESUMA MI 2000000
30107004 MURDIJAT ARIF
PRABOWO MI 15000000
30207005
TK ANUGRAH DWI
ARDIANTO TK 8000000
30207006
ANDRE ADRIAN TK 2000000
30207007
ANDI HAKIM
ARIF TK 4000000
30307008
SWANDY EFRAIM
MANALU KA 10000000
30307009
SITI
NURFAUZIYAH KA KA 3500000
Bagaimana jika ingin menggunakan banyak criteria break? Anda
dapat menggunakan klausa ON sebanyak criteria yang diinginkan. Contoh-contoh
break dapat ditemukan pada pokok-pokok
bahasan berikutnya. Apabila perintah BREAK dijalankan tanpa klausa ON, perintah
tersebut ditujukan untuk memunculkan
perintah BREAK yang terakhir. Sebagai contoh ditunjukkan di bawah
ini.
SQL> BREAK
Break on bayar skip 1 nodup
|
Perlu diingat bahwa setiap kali perintah BREAK dijalankan,
perintah tersebut berlaku sampai perintah BREAK berikutnya dijalankan atau
sampai CLEAR BREAKS dijalankan. Perintah CLEAR BREAKS berguna untuk menghapus
definisi break yang ada seperti yang ditunjukkan seperti ini.
SQL> CLEAR BREAKS
Breaks
cleared
|
b. Melakukan Kalkulasi dengan COMPUTE
Perintah COMPUTE dapat digunakan untuk melakukan perhitungan
terhadap sebuah kolom yang ekspresi dari sekelompok baris data. Bentuk umum
perintahnya adalah sebagai berikut.
COMPUTE [{function [LAB[EL] text]} OF <expr|column>
ON <expr|column| REPORT|ROW>
]
|
Satu perintah COMPUTE dapat menggunakan lebih dari satu
fungsi. dengan urutan pengerjaan COMPUTE.
Label text dapat diberikan untuk
membuat text menjadi tanda atau cap pada baris hasil COMPUTE. Jika tidak
diberikan, default text adalah nama fungsi.
Klausa
OF berfungsi untuk menentukan expr atau kolom apa yang dikalkulasi.
KLAUSA ON berfungsi untuk menentukan
Kriteria break untuk satu perhitungan COMPUTE.
Sebagai catatan, hasil dari perintah COMPUTE hanya dicetak
jika perintah BREAK disertakan. Nama
column atau expr pada klausa ON perintah COMPUTE harus ada pada klausa ON
perintah BREAK tersebut. Fungsi-fungsi
untuk Perintah COMPUTE :
Nama
Fungsi
|
Perhitungan
|
Tipe Data
|
AVG
|
Nilai
rata-rata.Baris yang diperhitungkan hanya baris dengan nilai yang tidak NULL
|
NUMBER
|
COU[NT]
|
Menghitung
jumlah baris yang nilai column atau
exprnya tidak NULL
|
Semua
|
MIN[MUM]
|
Nilai minimum
|
NUMBER,CHAR,VARCHAR2
|
MAX[MUM]
|
Nilai maksimum
|
NUMBER,CHAR,VARCHAR2
|
NUM[BER]
|
Menghitung jumlah baris, termasuk yang bernilai NULL
|
Semua
|
SUM
|
Jumlah nilai
|
NUMBER
|
SID
|
Standar deviasi dari nilai
column atau expr yang tidak
NULL
|
NUMBER
|
VAR[IANCE]
|
Variance dari nilai column atau expr yang tidak NULL
|
NUMBER
|
Berikut ini diberikan sebuah contoh perhitungan rata-rata,
nilai minimum, dan nilai maksimum dari
bayar yang dikelompokkan prodi. Pengurutan data (ORDER BY) juga berpengaruh
pada keluaran. Perhatikan juga, BREAK dikenakan pada kolom departemen dengan
skip satu baris dan pada kolom pos_id tanpa skip.
SQL> BREAK ON prodi SKIP 2;
SQL> COMPUTE AVG MAX MIN OF bayar ON
prodi;
SQL> SELECT
nim,nama,prodi,bayar FROM
mahasiswa ORDER BY prodi;
NIM NAMA PRODI
BAYAR
30307009 SITI NURFAUZIYAH
KA 3500000
30307008 SWANDY EFRAIM MANALU 10000000
**
avg 6750000
minimum 3500000 maximum 10000000
30107003 WIDO KESUMA MI 2000000
30107001 ANGGI NOVEMBRA 2000000
30107004 MURDIJAT ARIF PRABOWO 15000000
**
avg 6333333,33
minimum 2000000 maximum 15000000
30207007 ANDI HAKIM
ARIF TK 4000000
30207005 ANUGRAH DWI ARDIANTO 8000000
30207006 ANDRE ADRIAN 2000000
**
avg 4666666,67
minimum 2000000 maximum 8000000
8 rows
selected.
|
Sebagai catatan tambahan, semua atribut yang telah
ditentukan dengan perintah COMPUTE dapat dihapus menggunakan perintah CLEAR
COMPUTES.
c. Perintah COLUMN Untuk Memformat Kolom
Perintah ini digunakan untuk
memformat judul kolom maupun nilai kolom. Bentuk umum perintahnya adalah
sebagai berikut.
COL[UMN] [<column |
expr > {[option]}]
|
Apabila perintah COLUMN digunakan tanpa column atau expr
maka SQL*Plus akan mengeluarkan atribut COLUMN yang sedang berlaku pada session
SQl*Plus tersebut (bukan session user database). Apabila perintah COLUMN
digunakan dengan menyertakan column atau
expr namun tanpa option, SQL*Plus akan mengeluarkan atribut COLUMN untuk kolom
atau ekspresi yang disebutkan. Nilai option dapat berupa klausa-klausa yang
diperhatikan pada Tabel. Berikut daftar Option pada Perintah COLUMN
Klausa
|
Desripsi
|
ALI[AS] alias
|
Memberi nama alias yang
dapat digunakan untuk menggantikan nama column pada perintah BREAK,
COMPUTE, ataupun COLUMN
|
CLE[AR]
|
Mengembalikan atribut colomn ke nilai default sesuai dengan
tipe data, panjang data, dan sebagainya
|
FOLD_A[FTER]
|
Menambahkan karakter
baris baru(carriage return) setelah judul column dan setelah nilai column
dari setiap baris. Tidak berlaku untuk kolom terakhir pada klausa
SELECT
|
FOLD_B[EFORE]
|
Menambahkan karakter baris baru (carriage return) sebelum
judul column dan setelah nilai column dari setiap baris. Tidak berlaku untuk kolom pertama pada klausa SELECT
|
FOR[MAT] format
|
Menentukan format tampilan
nilai column. Format untuk kolom karakter berupa “An” dimana n adalah lebar
kolom. Format untuk kolom DATE mengikuti NLS_DATE_FORMAT namun lebar kolomnya
dapat ditentukan dengan “An”. Format untuk kolom NUMBER sama dengan format yang digunakan pada fungsi
TO_CHAR(NUMBER)
|
HEA[DING]
|
Menentukan
text sebagai judul kolom untuk menggantikan judul kolom yang diberikan di
dalam SELECT statement. String karakter text dapat mengandung karakter
HEADSEP untuk menampilkan judul kolom dalam dua baris atau lebih.
|
JUS[TIFY]
<L[EFT]|C[ENTER]|R[IGHT]>
|
Menentukan apakah judul kolom dan nilai kolom ditampilkan
rata kiri, di tengah-tengah. Atau
rata kanan. Jika tidak
disebutkan maka kolom NUMBER
ditampilkan rata kanan dan kolom lainnya rata kiri
|
LIKE[expr|alias]
|
Menyalin atribut tampilan
dari kolom lain. Atribut yang disalin
hanya atribut yang tidak ditemukan secara eksplisit.
|
NEWL[INE]
|
Sama
efeknya dengan FOLD_BEFORE, yakni menampilkan baris baru sebelum nilai column
ditampilkan.
|
NEW_V[ALUE] variable
|
Digunakan untuk
membuat variable yang nilainya adalah nilai kolom. Variable tersebut biasanya
diguna-kan pada perintah TITLE untuk membuat judul-atas pada laporan master
detail. Agar pengaruhnya terlihat, kolom pada perintah ini harus digunakan
juga pada perintah
“BREAK…SKIP PAGE”
|
NOPRI[NT]|PRI[NT]
|
Mengatur apakah judul dan nilai column dicetak di layar
(ON) atau tidak (OFF).
Default adalah OFF
|
NUL[L] text
|
Menentukan text sebagai nilai yang dicetak pada kolom yang
ditentukan
|
OLD_V[ALUE] variable
|
Digunakan
untuk membuat variable yang nilainya adalah
nilai kolom. Variable tersebut biasanya digunakan pada perintah BTITLE
untuk membuat judul-bawah pada laporan master detail. Kolom pada perintah ini
harus digunakan juga pada perintah “BREAK…SKIP PAGE”
|
ON|OFF
|
Mengaktifkan (ON) atau menonaktifkan (OFF) atributatribut
kolom yang sudah didefinisikan.
|
WRA[PPED] |
WOR[D_WRAPPED|
TRU[NCATE]
|
Perintah
ini khusus untuk kolom DATE atau karakter yang lebarnya ditentukan namun
nilai kolom tersebut melebihi lebar kolom yang disediakan. Pilihan WRAPPED
akan melanjutkan bagian yang tidak mencukupi ke baris yang baru pada kolom
yang sama. Pilihan WORD_WRAPPED akan melanjutkan kata-kata yang tidak
mencukupi ke baris yang baru pada kolom yang sama. Pilih TRUNCATE akan memotong
bagian yang tidak mencukupi.
|
Selain itu ada tambahan format “DATE” yang bertujuan untuk
menampilkan nilai NUMBER sebagai Julian_date dalam format DD/MM/YY. Berikut ini
diberikan sebuah contoh performatan kolom-kolom dari data-data mahasiswa.
Perintah-perintah tersebut ditulisakan
di dalam script “rpt_mahasiswa.sql”.
--rpt_mahasiswa.sql
/* Mengatur beberapa nilai system
variable*/
SET PAGESIZE 600
SET LINESIZE 950
SET HEADSEP
"|"
SET RECSEP OFF
/*Menghapus BREAKS, COMPUTES, dan
COLUMNS*/
CLEAR BREAKS;
CLEAR COMPUTES;
CLEAR COLUMNS;
/*Mengatur format kolom*/
COLUMN nim FORMAT A10 WORD_WRAPPED COLUMN nama FORMAT A20 WORD_WRAPPED
COLUMN prodi FORMAT A10 WORD_WRAPPED HEADING "PRODI|JUR"
COLUMN bayar FORMAT 99G999G999D99
/*Query untuk menampilkan data-data
mahasiswa*/
SELECT nim,nama,prodi,bayar FROM mahasiswa ORDER BY 1,2;
|
Keluaran dari script diatas
ditujukan berikut ini.
SQL> @ C\:rpt_mahasiswa.sql
|
|
|
|
NIM
|
NAMA
|
PRODI
JUR
|
BAYAR
|
30107001
|
ANGGI NOVEMBRA
|
MI
|
2.000.000,00
|
30107003
|
WIDO KESUMA
|
MI
|
2.000.000,00
|
30107004
|
MURDIJAT ARIF
PRABOWO
|
MI
|
15.000.000,00
|
30207005
|
ANUGRAH DWI
|
TK
|
8.000.000,00
|
30207006
|
ANDRE ADRIAN
|
TK
|
2.000.000,00
|
30207007
|
ANDI HAKIM ARIF
|
TK
|
4.000.000,00
|
30307008
|
SWANDY EFRAIM MANALU
|
KA
|
10.000.000,00
|
30307009
8 rows selected.
|
SITI NURFAUZIYAH
|
KA
|
3.500.000,00
|
Perhatikan script dan keluaran di atas. Perhatikan pula
bagian-bagian yang diberi latar abu-abu. Lebar kolom prodi ditentukan sebesar
10 karakter. Judulnya menjadi PRODI JUR dan dituliskan dalam dua baris (HEADING
“PRODI | JUR”). Lebar kolom nama ditentukan sebesar 20 karakter dan diberikan
pilihan WORD_WRAPPED. Dengan demikian maka string posisi yang lebih dari 20
karakter akan dituliskan dalam dua baris. Lihatlah nama “MURDIJAT ARIF PRABOWO”
yang nama terakhirnya di-wrap. Kolom bayar diformat dengan pemisah grup
(ribuan) dan diberi tanda decimal (tanda titik). Jumlah angka pecahan decimal
adalah dua angka. Sebagai catatan tambahan, semua atribut tampilan yang
ditentukan oleh perintah COLUMN dapat
dihapus dengan menggunakan perintah CLEAR COLUMNS.
d. Memberi Judul pada Halaman
Judul halaman dapat diberikan
dengan menggunakan perintah TTITLE dan BTITLE. TTITLE untuk judul atas,
sedangkan BTITLE untuk judul bawah. Bentuk umum kedua perintah ini
diperlihatkan di bawah ini.
TTITLE{[printspec [text | variable
]]} [ON|OFF]
BTITLE{[printspec [text | variable ]]} [ON|OFF]
|
Nilai printcpec bertujuan untuk menentukan spesifikasi cetak
dari text atau variable. Pilihan-pilihan untuk printspec diberikan pada Tabel.
Tabel Spesifikasi
Cetak pada Perintah TTITLE dan BTITLE
Spesifikasi Cetak
|
Kegunaan
|
COL n
|
Menentukan posisi cetak
dimulai dari kolom ke n.
|
S[KIP] [n]
|
Memulai
baris baru n berikutnya dari baris sebelumnya. Jika n tidak disertakan, n=1.
Jika n=0, text atau variable dicetak pada baris berikutnya.
|
TAB n
|
Menambahkan tab maju sebanyak n.Jika n negative, yang
dicetak adalah tab mundur
|
LE[FT] | CE[NTER] | R[IGHT]
|
Menentukan apakah judul dicetak rapat kiri, di tengah ,
atau rapat kanan
|
BOLD
|
Mencetak
dengan huruf tebal. Pada SQL*Plus disimbolkan dengan mencetak text atau
variable sebanyak tiga kali. Beberapa system operasi dapat menerjemahkan
menjadi cetak tebal apabila dicetak ke printer.
|
FORMAT format
|
Menentukan format. Format yang valid adalah yang berlaku
untuk perintah COLUMN.
|
Nilai variable dapat diisi dengan user variable, termasuk
variable yang dibuat dengan perintah COLUMN, dan juga dapat diisi dengan
nilai-nilai system SQL*Plus. Nilainilai system SQL*Plus dapat berupa salah satu
dari daftar berikut ini.
SQL.LNO,
untuk menampilkan nomor dari current line.
SQL.PNO,
untuk menampilkan nomor dari current page.
SQL.RELEASE,
untuk menampilkan nomor release Oracle.
SQL.ERRORCODE,
untuk menampilkan kode kesalahan. SQL.USER, untuk menampilkan nama
current user.
Kecuali SQL.ERRORCODE, nilai-nilai pada daftar di atas dapat
juga ditampilkan menggunakan perintah SHOW. Namun, perintah SHOW tidak dapat
yang sudah pernah diberikan. Pilihan ON atau OFF dapat diberikan untuk
mengaktifkan ayau menonaktifkan TTITLE atau BTITLE tanpa harus menghapus
definisi yang sudah diberikan. Jika perintah TTITLE atau BTITLE digunakan tanpa
klausa apapun, perintah tersebut
ditujukan untuk menampilkan definisi dari TTITLE atau BTITLE yang sedang
berlaku.
e. Menambahkan Report Header dan Footer
Perintah untuk menambahkan report header dan report footer
hampir sama dengan perintah TTITLE dab BTITLE. Bentuk umum perintahnya adalah
sebagai berikut.
REPH[EADER][PAGE]{[printspec[text|variable]]}[ON|OFF] REPF [OOTER][PAGE]{[printspec[text|variable]]}[ON|OFF]
|
Jika pilihan PAGE disertakan, halaman baru akan dibuat
setelah report header ditampilkan atau sebelum report footer ditampilkan.
Pilihan-pilihan lainnya sama fungsinya dengan fungsi pilihan pada perintah
TTITLE atau BTITLE.
Tidak seperti judul halaman, report header dan report footer
hanya satu kali dicetak untuk satu SELECT statement. Jika SELECT Statement
menghasilkan banyak baris data sehingga membutuhkan tempat lebih dari satu
halaman, judul halaman (TITILE dan BTITLE) akan dicetak sebanyak halaman yang
ada. Sedangkan report header ditampilkan sebelum SELECT statement diproses dan
report footer ditampilkan setelah SELECT statement diproses. Jadi, yang
dianggap satu report adalah satu SELECT statement. Report header dan report
footer digunakan bersama-sama dengan judul-atas dan judul-bawah halaman.
f. Menambahkan Tanggal
Untuk menambahkan konstanta tanggal, tentunya dapat
digunakan perintah TTITLE. Namun,
untuk menambahkan tanggal sesuai dengan tanggal script dijalankan, dibutuhkan
“kerjasama” antara perintah COLUMN, SQL, statement, dan TTITLE/BTITLE (atau
REPHEADER/REPFOOTER). Perintah COLUMN digunakan untuk menampung nilai user
variable. SQL statement digunakan untuk menampung nilai SYSDATE ke dalam user variable.
Perintah TTITLE digunakan untuk mencetaknya.
Berikut ini diberikan sebuah contoh sederhana. Perintah
COLUMN digunakan untuk membuat variable
tg_skrg (NEW_VALUE) yang nilainya diambil dari kolom today. Kolom today dipilih
pada SELECT statement dan nilainya adalah SYSDATE. Perintah TTITLE ditujukan untuk
mencetak nilai dari variable tgl_skrg.
2. Menyimpan dan Mencetak Laporan
Seperti yang telah disinggung
pada awal bab ini, semua yang dipaparkan di dalam subbab ini berguna untuk
membuat sebuah laporan berdasarkan data yang ada di dalam database. Biasanya,
perintah-perintah dari sebuah laporan, termasuk pengaturan environment yang
berhubungan dengan tampilan, disimpan di dalam file (script) agar dapat
digunakan secara berulang. Hasil atau keluaran dari eksekusi file laporan
tersebut biasanya juga disimpan di dalam file (soft copy) kemudian dapat
dicetak di atas ertas (hard copy).
Perintah SPOOL, dapat digunakan untuk mencetak keluaran ke
atas kertas. Untuk mengingatkan kembali, perintah untuk memulai dan mengakhiri
SPOOL ditampilkan berikut ini.
SPOOL file_name[.ext]
SPOOL [OFF|OUT]
|
Pilihan OFF maupun OUT sama-sama
bertujuan untuk mengakhiri spooling (semua keluaran dituliskan ke dalam file
spool). Khusus untuk OUT, setelah penulisan ke file dilakukan, file tersebut
dikirim ke default printer untuk dicetak
sebagai hard copy.
Hanya saja pada
system operasi Windows, perintah SPOOL OUT tidak mendukung
fungsi pencetakan tersebut. Pilihan OUT mempunyai efek yang sama dengan
OFF.
Berikut ini diberikan sebuah
script laporan dengan melibatkan perintah SPOOL. Keluaran dari script tersebut
disimpan di dalam file yang namanya dapat ditentukan oleh user. Keluaran tidak
ditampilkan pada layer SQL*Plus (SET TERMOUT OFF).
--rpt_bayar_mahasiswa.sql
-- Mengatur beberapa nilai system
variable
SET PAGESIZE 35
SET LINESIZE 60
SET HEADSEP ON
SET RECSEP OFF
SET FEEDBACK OFF
-- Menghapus BREAKS, COMPUTES, dan
COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
CLEAR COLUMNS
-- Melakukan perhitungan
jumlah pembayaran mahasiswa. BREAK ON prodi SKIP 2
COMPUTE AVG MAX MIN OF bayar ON prodi
--Mengatur format kolom
COLUMN today NOPRINT NEW_VALUE v_today
COLUMN nim FORMAT A10 WORD_WRAPPED COLUMN
nama FORMAT A20 WORD_WRAPPED
COLUMN prodi FORMAT A10 WORD_WRAPPED HEADING "PRODI|JUR"
COLUMN bayar FORMAT 99G999G999D99
--Mengakifkan RepHeader dan
RepFooter
REPHEADER "--START OF REPORT--" REPFOOTER "--END OF
REPORT--"
|
--Memberi Judul
TTITLE CENTER
"DAFTAR MAHASISWA" SKIP
CENTER"==============================================="
SKIP 2 LEFT "User : "SQL.USER SKIP RIGHT" Halaman
:"FORMAT 99 SQL.PNO SKIP LEFT"
Tanggal :"FORMAT A20 v_today SKIP
LEFT
"============================================================="
BTITLE LEFT
"----------------------------------------------------
------------------------------------------"
SKIP 2
--Mengaktifkan SPOOL.
Nama file dapat diinput oleh user SET DEFINE ON
ACCEPT file_name PROMPT "File penampung hasil
report: "
SPOOL &file_name
--Menonaktifkan pencetakan keluaran ke SQL* PLUS
SET TERMOUT OFF
-- Query untuk menampilkan data-data
mahasiswa
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY')today,nim,nama,prodi,bayar
FROM mahasiswa ORDER BY 1,2;
--Menghentikan Spool
SPOOL OFF
--Mengembalikan beberapa nilai system
variable ke default
SET FEEDBACK ON
SET RECSEP WRAPPED
SET TERMOUT ON
|
Apabila script diatas dijalankan, yang ditampilkan hanya
teks untuk meminta user memasukkan nama
file (dan direktori) tempat penampungan hasil laporan seperti yang ditunjukkan
berikut ini.
SQL> @ C:\rpt_bayar_mahasiswa.sql
File penampung hasil report : C:\BelajarSQL\rpt_hasil.txt
|
Anda dapat melihat isi file
laporan yang baru saja dibuat menggunakan perintah GET atau membukanya dengan
sembarang text editor. Apabila Anda meliaht
isi file tersebut dengan menggunakan perintah GET, baris-baris
kosong tidak akan dimunculkan. Isi file laporan tersebut adalah seperti berikut
ini.
DAFTAR MAHASISWA
User
: DEDY
Halaman : 1
Tanggal : 09-AGT-2008
--START OF REPORT--
PRODI
NIM
NAMA JUR BAYAR
30107001 ANGGI
NOVEMBRA MI 2.000.000,00 30107003 WIDO
KESUMA 2.000.000,00
30107004 MURDIJAT
ARIF 15.000.000,00
PRABOWO
* ------------------
avg 6.333.333,33
minimum 2.000.000,00 maximum 15.000.000,00
30207005 ANUGRAH
DWI ARDIANTO TK 8.000.000,00 30207006 ANDRE
ADRIAN 2.000.000,00
30207007 ANDI
HAKIM ARIF 4.000.000,00
* -----------------
avg 4.666.666,67
minimum 2.000.000,00 maximum 8.000.000,00
|
30307008 SWANDY
EFRAIM MANALU KA 10.000.000,00 30307009 SITI
NURFAUZIYAH 3.500.000,00
-
DAFTAR MAHASISWA User :
DEDY
Halaman : 2
Tanggal : 09-AGT-2008
PRODI
NIM
NAMA JUR BAYAR
* -----------------
avg 6.750.000,00
minimum 3.500.000,00 maximum 10.000.000,00 --END OF REPORT--
|
3. Menciptakan output HTML dengan SQL * Plus
Sejak versi 8.1.6 oracle memungkinkan kita untuk menciptakan HTML dengan SQL*Plus.
Sangatlah mudah untuk mengubah script dari mode karakter ke html, karena
seluruh tag SQL * Plus dapat dikonversi ke tag HTML tanpa mengubah kode.
--rpt_bayar_mahasiswa_html.sql
--menjalankan output
dalam html dan melakukan spool terhadap
output
SET MARKUP HTML ON SPOOL ON
--menentukan
file dengan ekstension htm atau html
SPOOL file_name.html
-- Query
SELECT * FROM table_name;
-- mengakhiri
file html
SPOOL OFF
-- mengatur kembali ke output normal SET
MARKUP HTML OFF SPOOL OFF
|
Kemudian perintah diatas
dieksekusi sbb:
SQL> @ C:\rpt_bayar_mahasiswa_html.sql
File penampung hasil report : C:\BelajarSQL\rpt_hasil.html
|
Berikut ini contohnya jika report
yang telah dibuat sebelumnya dijadikan file HTML:
--Menjalankan output dalam html
SET MARKUP HTML ON SPOOL ON
-- Mengatur beberapa nilai system
variable
SET PAGESIZE 35
SET LINESIZE 60
SET HEADSEP ON
SET RECSEP OFF
SET FEEDBACK OFF
-- Menghapus BREAKS, COMPUTES, dan
COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
CLEAR COLUMNS
-- Melakukan perhitungan
jumlah penerimaan pegawai per-tahun. BREAK ON prodi SKIP 2
COMPUTE AVG MAX MIN OF bayar ON prodi
|
--Mengatur format kolom
COLUMN today NOPRINT NEW_VALUE v_today
COLUMN nim FORMAT A10 WORD_WRAPPED COLUMN nama FORMAT A20 WORD_WRAPPED
COLUMN prodi FORMAT A10 WORD_WRAPPED HEADING
"PRODI|JUR"
COLUMN bayar FORMAT 99G999G999D99
--Menonakifkan RepHeader dan RepFooter
REPHEADER
"--START OF REPORT--" REPFOOTER "--END OF
REPORT--"
--Memberi Judul
TTITLE CENTER
"DAFTAR MAHASISWA" SKIP
CENTER"===============================================" SKIP
2
LEFT "User : "SQL.USER SKIP RIGHT
"Halaman :"FORMAT 99 SQL.PNO SKIP LEFT
"Tanggal :"FORMAT A20 v_today SKIP LEFT
"============================================================="
BTITLE LEFT
"---------------------------------------"
SKIP 2
--Mengaktifkan SPOOL. Nama file dapat
diinput oleh user
SET DEFINE ON
ACCEPT file_name PROMPT "File penampung hasil
report: "
SPOOL &file_name
--Menonaktifkan pencetakan keluaran ke SQL* PLUS SET
TERMOUT OFF
-- Query untuk menampilkan data-data
pegawai
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY')today,nim,nama,prodi,bayar
FROM mahasiswa ORDER BY 1,2;
--Menghentikan Spool
SPOOL OFF
--Mengembalikan beberapa nilai system
variable ke default
SET FEEDBACK ON
SET RECSEP WRAPPED
SET TERMOUT ON
SET MARKUP HTML OFF SPOOL OFF;
|
Hasil dari eksekusi script
diatas adalah sbb:
DAFTAR MAHASISWA
User : DEDY
Halaman : 1 Tanggal : 09-AGT-2008
NIM
|
NAMA
|
PRODI
JUR
|
BAYAR
|
30107001
|
ANGGI NOVEMBRA
|
MI
|
2.000.000,00
|
30107003
|
WIDO KESUMA
|
|
2.000.000,00
|
30107004
|
MURDIJAT ARIF
PRABOWO
|
|
15.000.000,00
|
|
|
*
|
|
|
|
avg
|
6.333.333,33
|
|
|
minimum
|
2.000.000,00
|
|
|
maximum
|
15.000.000,00
|
30207005
|
ANUGRAH DWI
ARDIANTO
|
TK
|
8.000.000,00
|
30207006
|
ANDRE ADRIAN
|
|
2.000.000,00
|
30207007
|
ANDI HAKIM ARIF
|
|
4.000.000,00
|
|
|
*
|
|
|
|
avg
|
4.666.666,67
|
|
|
minimum
|
2.000.000,00
|
|
|
maximum
|
8.000.000,00
|
30307008
|
SWANDY EFRAIM
MANALU
|
KA
|
10.000.000,00
|
30307009
|
SITI NURFAUZIYAH
|
|
3.500.000,00
|
|
|
*
|
|
|
|
avg
|
6.750.000,00
|
|
|
minimum
|
3.500.000,00
|
|
|
maximum
|
10.000.000,00
|
Tugas Pendahuluan :
1.
Jelaskan fungsi dari report.
2.
Apa kondisi/alasan yang menyebabkan dibuatnya suatu
report?
3.
Bagaimana bentuk format date yang benar untuk suatu
kolom pada Oracle sehingga data tanggal benar-benar bisa dimasukkan dalam kolom
tersebut.
Percobaan :
1.
Lakukan IMPORT
atas database yang telah dibuat pada modul praktikum sebelumnya.
2.
Buatlah report yang menampilkan seluruh data buku
lengkap dengan jenis dan suppliernya berdasarkan pada database yang dibuat pada
modul 6 (format report harus sejelas dan selengkap mungkin)!
3.
Dari report yang ada di nomor 1 buatlah output HTML!
0 komentar:
Post a Comment