mari melanjutkan belajar,
skli lagi,
jangan serakah, jangan gegabah, baca satu-satu dan fokus,,
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
NB: tanda * artinya bahwa seluruh kolom dari tabel akan ditampilkan (SELURUHNYA)
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
lihat NAMA awal |
lihat NAMA 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
|
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 masing-masing
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;
update nilai set ipa =8 where nim=3;
|
Nilai akhir IPA si UNI |
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 br=""> 4> |
Menampilkan NIM,Nama,dan
Nilai IPA dimana NIM<4 o:p="">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.
CONTOH
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
|
GRADE
|
GAJI POKOK
|
TUNJANGAN
|
TOTAL
|
1
|
|||||
2
|
|||||
…
|
|||||
40
|
GRADE
|
GM
|
SM
|
MGR
|
AM
|
SV
|
FM
|
LD
|
WK
|
GAJI POKOK
|
20 JT
|
15 JT
|
10 JT
|
7 JT
|
5 JT
|
4 JT
|
3 JT
|
2 JT
|
TUNJANGAN
|
5 JT
|
3 JT
|
2 JT
|
1 JT
|
0,5 JT
|
0
|
0
|
0
|
TOTAL
|
25 JT
|
18 JT
|
12 JT
|
8 JT
|
5,5 JT
|
4 JT
|
3 JT
|
2 JT
|
% TAMBAHAN
|
5%
|
6%
|
7%
|
8%
|
9%
|
10%
|
11%
|
12%
|
*****
Listing Program
--drop
table salary;
create
table salary(
nik number(2),
nama varchar2(10),grade varchar2(3), gapok
number(9), tunj 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;
--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, grade,gapok,tunj,total)
values(16,'adi','am',7000000,1000000,8000000);
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, grade,gapok,tunj,total)
values(21,'dini','sv',5000000,500000,5500000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(22,'bardi','sv',5000000,500000,5500000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(23,'udin','sv',5000000,500000,5500000);
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, grade,gapok,tunj,total)
values(26,'musdi','fm',4000000,0,4000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(27,'apik','fm',4000000,0,4000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(28,'unang','fm',4000000,0,4000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(29,'mita','fm',4000000,0,4000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(30,'safrul','fm',4000000,0,4000000);
--untuk
LD
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(31,'tina','ld',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(32,'bunga','ld',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total) values(33,'rini','ld',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(34,'jefry','ld',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(35,'nizam','ld',3000000,0,3000000);
--untuk
WK
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(36,'umar','wk',2000000,0,2000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(37,'lili','wk',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total) values(38,'agus','wk',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(39,'beni','wk',3000000,0,3000000);
insert
into salary (nik,nama, grade,gapok,tunj,total)
values(40,'mutia','wk',3000000,0,3000000);
--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;
--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 );
end
;
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
|
IPA
|
MAT
|
B
INDO
|
B
INGR
|
RATA-RATA
|
1
|
ANI
|
9
|
8
|
8
|
7
|
|
2
|
ANDI
|
7
|
8
|
9
|
8
|
|
3
|
UNI
|
3
|
4
|
9
|
8
|
|
4
|
INA
|
8
|
5
|
4
|
7
|
|
5
|
ANDRI
|
7
|
10
|
9
|
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;
--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
avg(ipa)into v_ipa from nilai;
select
avg(mat)into v_mat from nilai;
select
avg(bindo)into v_bindo from nilai;
select
avg(bingr)into v_bingr from nilai;
select
max(ipa)into m_ipa from nilai;
select
max(mat)into m_mat from nilai;
select
max(bindo)into m_bindo from nilai;
select
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('
nilai tertinggi ipa: ' || m_ipa);
dbms_output.put_line('
nilai tertinggi matematika: ' || m_mat);
dbms_output.put_line('
nilai tertinggi b.indo: ' || m_bindo);
dbms_output.put_line('
nilai tertinggi b.inggris: ' || m_bingr);
--add by agung
select count(*) into total_stu from nilai;
---
v_total
:= 0;
m_total
:=0;
for
i in 1..total_stu loop
select
nim into v_nim from nilai where nim = i;
select
nama into v_nama from nilai where nim = i;
select
ipa into v_ipa from nilai where nim = i;
select
mat into v_mat from nilai where nim = i;
select
bindo into v_bindo from nilai where nim = i;
select
bingr into v_bingr from nilai where nim = i;
select
rata_rata into v_rata from nilai where nim = i;
select
ipa+mat+bindo+bingr into v_total from nilai where nim = i;
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;
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:
Tidak ada komentar:
Posting Komentar