LAPORAN TERTULIS ON THE JOB TRAINING
I. TANGGAL
: 21 – 26 SEPTEMBER 2014
II. TUJUAN
:
1.
Dapat memahami DDL (Data Definition Language).
2.
Dapat memahami DML (Data Manipulation Language).
3.
Dapat membuat contoh tabel pada query.
4.
Dapat menerapkan command pada tabel.
SUBJEK PEMBAHASAN : CREATE, DROP, ALTER
************** Pada PL/SQL terdiri dari 4 buah bagin utama yaitu: 1. DDL (Data Definition Language) : bahasa yang mempunyai kemampuan untuk mendefinisikan data yag berhubungan dengan pembuatan dan penghapusan objek seperti contoh tabel, indeks, nama, dll. Yang termasuk dalam DDL ini yaitu CREATE, DROP, ALTER. 2. DML (Data Manipulation Language) : bahasa yang berhubungan dengan proses manipulasi data pada tabel, record. Yang termasuk dalam DML ini yaitu: INSERT, UPDATE, SELECT, DELETE. 3. DCL (Data Control Language) : bahasa yang mengatur hak akses apa saja yang diberikan kepada suatu user. Yang termasuk dalam DCL ini yaitu GRANT dan REVOKE. 4. TC (Transaction Control) : bahasa yang mengatur perubahan pada DML terhadap apa saja yang telah dilakukan.
1. DDL (Data Definition Language) Dalam database SQL biasanya terdiri dari tabel data dan semua data di dalamnya. DDL ini menggambarkan desain basis data secara keseluruhan dan didefinisikan dengan bahasa khusus. Dengan bahasa tersebut kita bisa membuat tabel baru, membuat indeks, mengubah tabel, mengubah struktur tabel, atau menghapus dabel. Hasil dari kompilasi DDL biasanya merupakan kumpulan dari beberapa tabel yang disimpan dalam file khusus yang disebut Kamus Data. Yang termasuk dalam bahasa pada DDL yaitu: 1. CREATE 2. DROP 3. ALTER
1.1 CREATE Perintah CREATE berfungsi untuk membuat. Dalam PL/SQL perintah CREATE ini dapat membuat tabel baru, indeks, prosedur, fungsi, view, dll. Dalam pembahasan ini akan dibahas mengenai fungsi perintah CREATE untuk membuat table. Adapun penulisan perintah CREATE dituliskan sebagai berikut: CREATE TABLE nama_tabel ( Nama_kolom1 tipe_datanya(jumlah_data) [ NULL | NOT NULL ], Nama_kolom2 tipe_datanya(jumlah_data) [ NULL | NOT NULL ] ... );
Pada perintah CREATE TABLE nama_tabel digunakan untuk membuat sebuah tabel baru dan nama_tabel bisa diganti sesuai dengan nama yang diinginkan pada program. Dalam sebuah tabel, pasti terdiri dari baris dan kolom. Oleh karena itu, di dalam perintah CREATE ini juga harus dibuat nama kolom, tipe data yang akan
digunakan dan jumlah panjang data yang akan digunakan. Sama seperti variabel, jika jumlah data tidak disebutkan, maka secara otomatis program akan mengartikan bahwa panjang data maksimum akan digunakan. Adapun contoh pembuatan tabel menggunakan perintah CREATE ditunjukkan pada contoh berikut:
CREATE TABLE nilai ( nim number(2), nama varchar2(7), ipa number(2), mat number(2), bindo number(2), bingr number(2), rata_rata number(2) ); Pada tabel diatas menggunakan nama tabel 'nilai’ dengan 7 buah kolom dengan nama dan tipe data yang tidak sama. Untuk menampilkan hasil kompilasi dari pogram, maka dituliskan perintah SELECT *FROM nama_tabel
Karena tabel yang telah dibuat yaitu tabel nilai, maka : SELECT *FROM nilai
Jika program dijalankan pada aplikasi maka akan menghasilkan tampilan seperti berikut.
Terlihat pada tampilan bahwa setelah dikompilasi struktur tabel mempunyai 7 buah kolom dengan nama kolomnya masing-masing sesuai dengan yang telah dibuat sebelumnya.
1.2 DROP Perintah DROP ini berfungsi untuk menghapus, bisa untuk menghapus tabel, kolom, view, fungsi, prosedur, dll. Dalam pembahasan ini dibahas mengenai fungsi DROP untuk menghapus tabel atau kolom. Adapun penulisan dari perintah DROP ini dituliskan sebagai berikut: DROP TABLE nama_tabel;
Berdasarkan contoh tabel nilai diatas, maka untuk menghapus tabel nilai maka perintah DROP menjadi : DROP TABLE nilai;
Setelah perintah DROP dijalankan oleh program dan kita tampilkan tabel nilai maka akan muncul eror seperti berikut:
Hal ini disebabkan karena tabel nilai telah dihapus dan tidak lagi ada pada database. Sehingga program tidak bisa menampilkan tabel dan memunculkan eror.
1.3 ALTER Perintah ALTER digunakan untuk merubah tabel, dalam hal ini adalah merubah variabel yang digunakan dalam tabel seperti merubah tipe data, merubah jumlah data, dan juga bisa untuk menambah kolom baru. Berikut dituliskan perintah ALTER:
1. Untuk menambah kolom baru ALTER TABLE nama_tabel ADD nama_kolom definisi_kolom;
Perintah ALTER juga bisa digunakan untuk menambah beberapa kolom baru sekaligus dengan penulisan ALTER TABLE table_name ADD (nama_kolom1 definisi_kolom,
nama_kolom2 definisi_kolom, ... nama_kolom_n definisi_kolom);
Sebagai contoh akan ditambah sebuah kolom baru pada tabel nilai dengan nama kolom ips dengan tipe data number dan panjang data (2), oleh karena itu penulisan perintah menjadi:
ALTER TABLE nilai ADD ips number(2);
Maka tampilan dari program yang dijalankan akan muncul sebagai berikut:
Kolom baru IPS
Perintah ALTER juga berfungsi untuk memodifikasi dari kolom seperti contoh untuk merubah definisi dari tabel. Misal pada tabel nilai, pada kolom nama didefinisikan dengan
varchar2(7). Penulisan perintah ALTER dituliskan sebagai
berikut: ALTER TABLE nama_tabel MODIFY nama_kolom definisi;
Dengan perintah ALTER kita akan merubah definisi dari nama dengan merubah menjadi varchar2(30). Oleh karena itu penulisan perintah dituliskan sebagai berikut: ALTER TABLE nilai
MODIFY nama varchar2(30);
Sehingga tampilan dari kolom berubah menjadi
Awal
Akhir
Untuk memodifikasi juga bisa untuk beberapa kolom sekaligus dengan penulisan sebagai berikut: ALTER TABLE table_name MODIFY (nama_kolom1 definisi, nama_kolom2 definisi, ... nama_kolom_n definisi);
Selain itu perintah ALTER dan DROP digunakan untuk menghapus kolom pada tabel dengan penulisan sebagai berikut: ALTER TABLE nama_tabel DROP COLUMN nama_kolom;
Seperti contoh akan menghapus kolom NIM pada tabel nilai maka penulisan menjadi seperti berikut:
ALTER TABLE nilai DROP COLUMN nim;
Adapun tampilan pada program setelah dijalankan maka akan menjadi sebagai berikut
Akhir (Kolom NIM hilang)
Awal
2. DML (Data Manipulation Language) Jika pada DDL adalah bahasa untuk mendefinisikan awal mengenai basis data (tabel, view, dll) maka DML merupakan bahasa yang digunakan untuk memanipulasi data dari basis data (dalam hal ini berupa tabel). Manipulasi data dapat berupa: 1. Penyisipan / penambahan data baru ke dalam tabel 2. Penghapusan data dari tabel 3. Pengubahan data dari tabel Adapun perintah yang termasuk dalam DML ini yaitu : 1. INSERT 2. UPDATE 3. SELECT 4. DELETE. 2.1 INSERT Perintah INSERT digunakan untuk menyisipkan / menambah data baru ke dalam tabel. Adapun perintah INSERT dituliskan seperti berikut:
INSERT INTO nama_table (kolom1, kolom2,...) VALUES(nilai1, nilai2,...);
Sebagai contoh pada tabel nilai diatas akan kita masukkan 5 buah nilai masingmasing pada variabel mat,ipa, bindo dan bingr. Maka, perintah INSERT dituliskan sebagai berikut: insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(1,'ani',9,8,8,7); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(2,'andi',7,8,9,8); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(3,'uni',3,4,9,8); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(4,'ina',8,5,4,7); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(5,'andri',7,10,9,8); commit;
Maka tampilan dari hasil program akan menjadi.
2.2 UPDATE Perintah UPDATE digunakan untuk merubah isi dari kolom (baris) yang diinginkan. Adapun penulisan perintah UPDATE dituliskan sebagai berikut:
UPDATE nama_tabel SET kolom1 = nilai1, Kolom2 = nilai2, ... WHERE kondisi;
Jika ingin mengupdate semua data maka, perintah WHERE tidak perlu digunakan. Perintah WHERE digunakan jika kita ingin meng-UPDATE data hanya pada kolom-kolom tertentu dengan kondisi tertentu sebagai filter nya. Dari contoh tabel di atas, kita akan mengubah nilai uni (NIM =3) menjadi 8, maka syntax nya menjadi.
update nilai set ipa =8 where nim=3;
Awal
Akhir
2.3 SELECT Perintah SELECT pada PL/SQL mempunyai fungsi untuk mengambil (retrieve) informasi dari database. Perintah ini juga mempunyai kemampuan seperti berikut:
Projection : Memilih kolomkolom dalam suatu tabel yang dihasilkan dari suatu query. Memilih beberapa atau banyak kolom yang dibutuhkan. Selection : Memilih barisbaris dalam suatu tabel yang dihasilkan dari suatu query. Banyak kriteria yang dapat digunakan untuk membatasi barisbaris yang akan diambil. Joining : Mengambil data bersama yang disimpan dalam tabeltabel yang berbeda dengan menentukan hubungan antara mereka. Joinjoin SQL dijelaskan lebih detail pada pembahasan selanjutnya.
Untuk mengambil data dari keseluruhan isi tabel, maka perintah SELECT ditulis menjadi SELECT *FROM nama_tabel;
Telah dicoba sebelumnya menampilkan isi dari tabel nilai dengan menggunakan perintah SELECT dimana akan tampil semua isi dari tabel nilai. Perintah ini juga bisa menampilkan hanya salah satu atau beberapa kolom yang akan ditampikan dengan penulisan : SELECT kolom1, kolom2,…,kolom n FROM nama_tabel;
WHERE kondisi;
Selain itu juga perintah ini bisa memfilter data yang akan ditampilkan dengan menggunakan perintah WHERE. Perintah WHERE akan memfilter data yang disesuaikan dengan kondisi yang didefinisikan pada perintah SELECT seperti ditunjukkan pada gambar berikut:
Menampilkan semua isi tabel dengan kondisi NIM<4
Menampilkan NIM,Nama,dan Nilai IPA dimana NIM<4
Selain itu juga, SELECT mempunyai fungsi lain yaitu dapat memasukkan nilai dari suatu variabel ke variabel lain degan menggunakan perintah :
SELECT variabel_awal INTO variabel_tujuan from nama_tabel WHERE kondisi;
2.4 DELETE
Perintah DELETE berguna untuk menghapus baris dari suatu tabel. Bisa diikuti dengan kondisi yang bersesuaian dengan data baris yang ingin dihapus. Penulisan perintah DELETE ditunjukkan sebagai berikut: DELETE FROM nama_tabel WHERE conditions;
Contoh akan dihapus data pada tabel dengan NIM = 1, maka :
Terlihat dari tampilan diatas bahwa pada tabel nilai, dimana NIM = 1 dihapus dan langsung ditampilkan data dari NIM 2 dan seterusnya.
III. TUGAS
: Pak Agung
1. Buat sebuah contoh tabel dengan 5 buah data dan beberapa buah kolom (terserah). ***** 1. Tabel dengan 5 buah data
Listing Program: create table perc ( id varchar2(4), name varchar2(30), jabatan varchar2(14 gaji_pokok number(9), tunjangan number(9 ); insert into perc(id,name,jabatan,gaji_pokok,tunjangan) values(2345,'ARINI','CLERK',1000000,400000); insert into perc(id,name,jabatan,gaji_pokok,tunjangan) values(4567,'MUSLIM','WORKER',1500000,500000); insert into perc(id,name,jabatan,gaji_pokok,tunjangan) values(3546,'ANIVA','ITNET',2000000,800000); insert into perc(id,name,jabatan,gaji_pokok,tunjangan) values(6879,'MALIK','ITSPV',2500000,900000); insert into perc(id,name,jabatan,gaji_pokok,tunjangan) values(1970,'DAMAR','ITMAN',3000000,1000000);
Tampilan dari hasil compile program:
2. Buat tabel dengan nama Salary dengan ketentuan : a. Buat tabel data dengan 5 orang pada tiap Grade b. Hitung tambahan berdasarkan gaji pokok c. Tampilkan Gaji baru tiap karyawan d. Tampilkan total dari semua gaji karyawan
NIK NAMA 1 2 … 40 GRADE GAJI POKOK
GRADE
GAJI POKOK
TUNJANGAN
TOTAL
GM 20 JT
SM 15 JT
MGR 10 JT
AM 7 JT
SV 5 JT
FM 4 JT
LD 3 JT
WK 2 JT
TUNJANGAN 5 JT TOTAL 25 JT % 5% TAMBAHAN
3 JT 18 JT 6%
2 JT 12 JT 7%
1 JT 8 JT 8%
0,5 JT 5,5 JT 9%
0 4 JT 10%
0 3 JT 11%
0 2 JT 12%
***** Listing Program --drop table salary; create table salary( nik number(2), nama varchar2(10),grade varchar2(3), number(9), total number(10),primary key(nik) ); --add by agung pesen memori total gaji lama.. declare total_gaji_lama number ; total_gaji_baru number ; total_effect number ; total_emp number; v_nik number; v_nama varchar2(10); v_grade varchar2(3); v_gapok number; v_tunj number; v_total number;
gapok
number(9),
tunj
--total = gapok + tunj; --untuk GM begin insert into salary (nik,nama, grade,gapok,tunj,total) values(1,'agung','gm',20000000,5000000,25000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(2,'novie','gm',20000000,5000000,25000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(3,'didik','gm',20000000,5000000,25000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(4,'nurdin','gm',20000000,5000000,25000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(5,'makhrus','gm',20000000,5000000,25000000);
--untuk SM insert into salary (nik,nama, grade,gapok,tunj,total) values(6,'heri','sm',15000000,3000000,18000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(7,'syarif','sm',15000000,3000000,18000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(8,'resty','sm',15000000,3000000,18000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(9,'ida','sm',15000000,3000000,18000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(10,'cucu','sm',15000000,3000000,18000000);
--untuk MGR insert into salary (nik,nama, grade,gapok,tunj,total) values(11,'kiki','mgr',10000000,2000000,12000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(12,'lesty','mgr',10000000,2000000,12000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(13,'oji','mgr',10000000,2000000,12000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(14,'rusli','mgr',10000000,2000000,12000000);
insert into salary (nik,nama, grade,gapok,tunj,total) values(15,'nina','mgr',10000000,2000000,12000000);
--untuk AM insert into salary (nik,nama, values(16,'adi','am',7000000,1000000,8000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, grade,gapok,tunj,total) values(17,'ucok','am',7000000,1000000,8000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(18,'dina','am',7000000,1000000,8000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(19,'andi','am',7000000,1000000,8000000); insert into salary (nik,nama, grade,gapok,tunj,total) values(20,'diah','am',7000000,1000000,8000000);
--untuk SV insert into salary (nik,nama, values(21,'dini','sv',5000000,500000,5500000);
grade,gapok,tunj,total)
insert into salary (nik,nama, grade,gapok,tunj,total) values(22,'bardi','sv',5000000,500000,5500000); insert into salary (nik,nama, values(23,'udin','sv',5000000,500000,5500000);
grade,gapok,tunj,total)
insert into salary (nik,nama, grade,gapok,tunj,total) values(24,'nanang','sv',5000000,500000,5500000); insert into salary (nik,nama, grade,gapok,tunj,total) values(25,'dimas','sv',5000000,500000,5500000);
--untuk FM insert into salary (nik,nama, values(26,'musdi','fm',4000000,0,4000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(27,'apik','fm',4000000,0,4000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(28,'unang','fm',4000000,0,4000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(29,'mita','fm',4000000,0,4000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(30,'safrul','fm',4000000,0,4000000);
grade,gapok,tunj,total)
--untuk LD insert into salary (nik,nama, values(31,'tina','ld',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(32,'bunga','ld',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(33,'rini','ld',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(34,'jefry','ld',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(35,'nizam','ld',3000000,0,3000000);
grade,gapok,tunj,total)
--untuk WK insert into salary (nik,nama, values(36,'umar','wk',2000000,0,2000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(37,'lili','wk',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(38,'agus','wk',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(39,'beni','wk',3000000,0,3000000);
grade,gapok,tunj,total)
insert into salary (nik,nama, values(40,'mutia','wk',3000000,0,3000000);
grade,gapok,tunj,total)
--add by agung --commit, after insert.. commit; --clear memory total_gaji_lama := 0; total_gaji_baru := 0; total_effect := 0;
--save total gaji lama select sum(total) into total_gaji_lama from salary;
dbms_output.put_line('Total Gaji Lama:'|| total_gaji_lama);
--increment update salary set gapok =
round(decode( grade,'gm',(1.05*gapok) ,'sm',(1.06*gapok) ,'mgr',(1.07*gapok) ,'am',(1.08*gapok) ,'sv',(1.09*gapok) ,'fm',(1.10*gapok) ,'ld',(1.11*gapok) ,'wk',(1.12*gapok)),0);
update salary set total = gapok + tunj; --commit; commit; --display new salary ; select count(*) into total_emp from salary; for i in 1..total_emp loop select nik into v_nik from salary where nik = i; select nama into v_nama from salary where nik = i; select grade into v_grade from salary where nik = i; select gapok into v_gapok from salary where nik = i; select tunj into v_tunj from salary where nik = i; select total into v_total from salary where nik = i; dbms_output.put_line('Nik:'|| v_nik); dbms_output.put_line('Nama:'|| v_nama); dbms_output.put_line('Grade:'|| v_grade); dbms_output.put_line('Gapok:'|| v_gapok); dbms_output.put_line('Tunj:'|| v_tunj);
dbms_output.put_line('Total:'|| v_total); end loop; --display increment effect select sum(total) into total_gaji_baru from salary; total_effect := total_gaji_baru - total_gaji_lama; dbms_output.put_line('Total Gaji Lama:'|| total_gaji_lama); dbms_output.put_line('Total Gaji Baru:'|| total_gaji_baru); dbms_output.put_line('Increment Effect :'|| total_effect --select total_gaji gaji_lama total_gaji effect from salary; end ; --end
,
sum(total)
gaji_baru,
);
sum(total)
-
3. Buat tabel nilai pelajaran siswa dengan ketentuan: a. Syarat lulus bagi siswa yaitu nilai rata-rata 6 DAN setiap nilai >=4,5. b. Tampilkan urut nilai rata-rata siswa tiap mata pelajaran. c. Tampilkan nilai tertinggi tiap mata pelajaran. d. Tampilkan siswa terbaik dan nilai-nilanya. **** Tabel nilai siswa NIM NAMA 1 2 3 4 5
ANI ANDI UNI INA ANDRI
IPA
MAT
B INDO
B INGR
9 7 3 8 7
8 8 4 5 10
8 9 9 4 9
7 8 8 7 8
Listing Program : --drop table nilai; create table nilai ( nim number(2), nama varchar2(7), ipa number(2), mat number(2), bindo number(2), bingr number(2), rata_rata number(2) ); declare total_stu number; v_rata number; v_nim number; v_nama varchar2(7); v_ipa number; v_mat number; v_bindo number; v_bingr number; m_ipa number; m_mat number; m_bindo number; m_bingr number;
RATARATA
--ad by agung v_total number; m_total number; m_terbaik varchar2(7); m_nim_terbaik number; -begin insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(1,'ani',9,8,8,7); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(2,'andi',7,8,9,8); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(3,'uni',3,4,9,8); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(4,'ina',8,5,4,7); insert into nilai (nim,nama,ipa,mat,bindo,bingr) values(5,'andri',7,10,9,8); commit; update nilai set rata_rata=(ipa+mat+bindo+bingr)/4; commit; select select select select
avg(ipa)into v_ipa from nilai; avg(mat)into v_mat from nilai; avg(bindo)into v_bindo from nilai; avg(bingr)into v_bingr from nilai;
select select select select
max(ipa)into m_ipa from nilai; max(mat)into m_mat from nilai; max(bindo)into m_bindo from nilai; max(bingr)into m_bingr from nilai;
dbms_output.put_line(' nilai rata-rata ipa seluruh siswa: ' || v_ipa); dbms_output.put_line(' nilai rata-rata matematika seluruh siswa: ' || v_mat); dbms_output.put_line(' nilai rata-rata b. indonesia seluruh siswa: ' || v_bindo); dbms_output.put_line(' nilai rata-rata b.inggris seluruh siswa: ' || v_bingr); dbms_output.put_line(' dbms_output.put_line(' dbms_output.put_line(' dbms_output.put_line('
nilai nilai nilai nilai
tertinggi tertinggi tertinggi tertinggi
ipa: ' || m_ipa); matematika: ' || m_mat); b.indo: ' || m_bindo); b.inggris: ' || m_bingr);
--remove and add by agung --select count(*) into total_stu from salary; select count(*) into total_stu from nilai; --v_total := 0; m_total :=0;
for i in 1..total_stu loop select select select select select select select select i;
nim into v_nim from nilai where nim = i; nama into v_nama from nilai where nim = i; ipa into v_ipa from nilai where nim = i; mat into v_mat from nilai where nim = i; bindo into v_bindo from nilai where nim = i; bingr into v_bingr from nilai where nim = i; rata_rata into v_rata from nilai where nim = i; ipa+mat+bindo+bingr into v_total from nilai where nim =
if v_total > m_total then m_total := v_total ; m_terbaik := v_nama ; m_nim_terbaik := v_nim ; end if; dbms_output.put_line('Nim: '|| v_nim); dbms_output.put_line('Nama: '|| v_nama); dbms_output.put_line('Nilai IPA: '|| v_ipa); dbms_output.put_line('Nilai MAT: '|| v_mat); dbms_output.put_line('Nilai bahasa indo: '|| v_bindo); dbms_output.put_line('Nilai bahasa inggris: '|| v_bingr); dbms_output.put_line('Nilai rata-rata semua pelajaran: '|| v_rata); if v_ipa >= 4.5 and v_mat >= 4.5 and v_bindo >= 4.5 and v_bingr >= 4.5 and v_rata>=6.0 then dbms_output.put_line('Lulus'); else dbms_output.put_line('Tidak Lulus'); end if; --remove by agung -- dbms_output.put_line('Siswa terbaik adalah : '|| v_nim); -end loop; --add by agung dbms_output.put_line('Siswa terbaik adalah : '|| m_terbaik || 'Total Nilai : ' || m_total); select ipa into v_ipa from nilai where nim = m_nim_terbaik; select mat into v_mat from nilai where nim = m_nim_terbaik; select bindo into v_bindo from nilai where nim = m_nim_terbaik; select bingr into v_bingr from nilai where nim = m_nim_terbaik; select rata_rata into v_rata from nilai where nim = m_nim_terbaik; dbms_output.put_line('Rincian Nilai Siswa Terbaik : '|| m_terbaik || ' Total Nilai : ' || m_total || ', IPA : ' || v_ipa
|| ', Matematika : ' || v_mat || ', Bhs. Ingris : ' || v_bingr || ', Bhs. Indonesia : ' || v_bindo); -end ;
Tampilan Program: