Post on 10-Dec-2015
6
Hal. 1 dari 6
Fakultas Teknologi InformasiUniversitas Budi LuhurUjian Akhir SemesterTahun Ajaran Genap 2014/2015
Mata Kuliah : Oracle : Introduction SQL dan PL/SQLKelompok : KU SI (2013)Dosen : Hendri Irawan, S. Kom, M.T.I.
TanggalWaktuSifat
: 7 Juli 2015: 120 Menit: Buka Noted 1 Lembar A4
NIM : 1312500380Nama : Imam Halim Mursyidin
Jawablah soal ini (1 – 10 Bobot 50%):
1. Jelaskan fungsi dari COMMIT dan ROLLBACK
Jawaban:
COMMIT, Perintah COMMIT digunakan untuk mengunci/ mengeksekusi data secara permanen, sehingga Setiap perubahan data yang dicommit tidak dapa dikemabalikan seperti semula.
ROLLBACK, Perintah Rollback digunakan untuk mengakhiri transaksi dan membatalkan perubahan-perubahan yang dibuat selama transaksi. Rollback berguna untuk dua alasan. Pertama, jika kita membuat kesalahan ketika menghapus baris data dari table, rollback mengembalikan data pertama. Kedua, jika kita memulai transaksi yang tidak dapat kita selesaikan karena munculnya exception atau gagalnya perintah SQL, rollback mengijinkan kita untuk kembali ke titik awal untuk melakukan pembetulan dan mungkin mencobanya lagi
2. Jelaskan persamaan dan perbedaan dari Basic Loop (Loop), While Loop, For Loop
Jawaban:
PERSAMAAN
Menggunakan DECLARE
PERBEDAAN
Perbedaan while loop dengan basic loop, perbedaannya dengan basic loop jelas kalo basic loop tidak perlu adanya kondisi awal sedangakan while loop perlu adanya kondisi awal dimana, jika kondisi awal bernilai true maka perulangan akan di laksanakan dan jika kondisi awal bernilai false maka bagan perulangan tidak akan pernah dimasuki atau dilakukan eksekusi apapun.
perbedaan for loop dengan basic loop, basic loop memiliki operasi increment sedangkan pada for-loop tidak ada operasi increment seperti j:=j+1, dan batas perulangan yang berbeda dimana basic loop memiliki batasan perulangan diakhir bagan perulangan sedankan for-loop ini memiliki batasan perulangan yang sudah di tentukan atau di definisikan langsung terlebih dahulu nilai awal dan batasan akhir perulangan sebelum atau di atas bagan perulangan
Perbedaan for loop dengan while loop, hampir sama dengan perbedaan antara for-loop ini dengan basic loop, perbedaan for loop dengan while loop ini yaitu tidak adanya operasi increment dalam for-loop, sedangkan di while-loop ada, dan spesifik perbedaannya juga terlihat adanya nilai konisi awal pada while loop yang berada sebelum bagan perulangan dan batasan perulangan yang berada di akhir perulangan.
sedangkan for-loop disini sudah jelas di definisikan sebagai perulangan yang sering di gunakan untuk suatu perulangan yang sudah diketahui berapa banyaknya akan terjadi perulangan. maka nilai atau output pertama dan batasan atau output akhir dari perulangan for loop sudah di definisikan terlebih dahulu di atas bagan perulangan.
3. Jelaskan apakah perbedaan antara SQL dengan PL/SQL
Jawaban:
6
Hal. 2 dari 6
SQL adalah bahasa deklaratif untuk database yg sudah distandarkan secara internasional (ANSI dan ISO), jadi seharusnya semua database yg menggunakan SQL standar akan memiliki statement/syntax yg sama, baik di Oracle, MySQL atau database lainnya.
PL/SQL adalah ekstensi dari SQL dengan menambahkan fungsi bahasa prosedural. Berbeda dengan SQL yg hanya mementingkan bagaimana mendapatkan hasil, dengan PL/SQL juga akan diketahui bagaimana proses untuk mendapatkan hasil tsb. Karena PL/SQL merupakan bahasa prosedural, maka statement/syntax yg digunakan sangat tergantung dari jenis bahasa yg diadopsi.
4. Jelaskan perbedaan antara Function dan Procedure
Jawaban:
Procedure yaitu sub program yang digunakan untuk melakukan proses tertentu dan tidak mengembalikan nilai, bisa disimpan dalam database sebagai object skema, sehingga suatu procedure bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang.
Function yaitu Sebuah kumpulan Statement yang akan mengembalikan sebuah nilai balik pada pemanggilnya. Nilai yang dihasilkan Function harus ditampung kedalam sebuah variabel.
Perbedaan function dan procedure, yaitu :
Perbedaan antara function dan procedure adalah : kalau function dia akan mengembalikan suatu nilai pada pemanggilnya, sedangkan kalau procedure dia tidak akan mengembalikan nilai apapun pada fungsi pemanggilnya
5. (auto commit = off)
Awal Transaksi
Table Regions
Menampilkan table Regions
Menambah data Region id = 5 , nama = Australias
Savepoint to A
Menghapus seluruh record di table Regions
Rollback to A
Mengubah data Australias menjadi Australia
Savepoint to B
Menghapus data yang Id Regionnya 5
Rollback to A
Commit;
Rollback;
Akhir Transaksi
Tuliskan isi record apa saja yang ada pada Table Regions setelah akhir transaksi diatas
Jawaban:
REGION_ID REGION_NAME
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Australias
Time
6
Hal. 3 dari 6
TULISKAN SELECT STATEMENT UNTUK SOAL 6 – 10 (Entity Class HR pada Akhir Soal)
6. Perintah untuk Menambah record baru di table Regions yaitu Australia
Jawaban:
Insert into Regions values (5,'Australias');
7. Perintah untuk Merubah no telepon karyawan 102 menjadi 515.123.1234
Sebelum
Sesudah
Jawaban:
Update employees set phone_number ='515.123.1234'
Where employe_id=102;
8. Perintah untuk Menghapus data region di table Regions yang tidak memiliki hubungan atau tidak ada (region_id) di table countries
Jawaban:
DELETE FROM regions
WHERE REGION_ID <> ALL(select region_id from countries);
9. Perintah untuk membuat table copy_employee100 beserta isinya. Table tersebut berisi Nama, email, no telepon, id pekerjaan, id departemen dari karyawan yang bekerja di departemen 100
Table copy_employees100
Jawaban:
CREATE TABLE copy_employee100 as select first_name ||' '|| last_name Nama, email,phone_number, job_id, department_id
From employees
WHERE department_id=100;
10. Perintah untuk membuat view dengan nama vempSA_MAN yang berisi Nama, Email, No Telepon, Id Pekerjaan, Id Departemen dan salary dari karyawan yang memiliki salary diatas 10000 dan memiliki Id Pekerjaan SA_MAN
View vempSA_MAN
6
Hal. 4 dari 6
Jawaban:
CREATE view
vempSA_MAN as select first_name ||' '|| last_name Nama, email,phone_number, job_id, department_id
FROM employees
WHERE salary >10000 and job_id='SA_MAN';
11. Buatlah sebuah fungsi untuk menampilkan grade dan status kelulusan, dengan ketentuan sebagai berikut (Bobot 30%) :
Nama Fungsi : FGrade(NilAbsen, NilUts, NilUas)
Parameter
Total = (0.1 * NilAbsen) + (0.4 * NilUts) + (0.5 * NilUas)
Grade A := 80 <= Total <= 100
Grade B := 70 <= Total < 80
Grade C := 60 <= Total < 70
Grade D := 40 <= Total < 60
Grade E := 0 <= Total < 40
Status A, B, dan C = Lulus
Status D dan E = Tidak Lulus
Contoh jika dijalankan:
Select FGrade(90,69,73) from Dual;
Result yang diminta akan mengembalikan nilai:
Grade B Status Lulus
Jawaban:
CREATE OR REPLACE FUNCTION
FGrade(nilabsen NUMBER, niluts NUMBER, niluas Number)
RETURN VARCHAR2 IS
total NUMBER(3);
grade VARCHAR2(30);
BEGIN
total := (0.1 * nilabsen) + (0.4 * niluts) + (0.5 * niluas);
IF total >= 80 THEN
grade := 'Grade A Status Lulus';
ELSIF total < 80 AND total >= 70 THEN
grade := 'Grade B Status Lulus';
ELSIF total < 70 AND total >= 60 THEN
grade := 'Grade C Status Lulus';
ELSIF total < 60 AND total >= 40 THEN
grade := 'Grade D Status Tidak Lulus';
ELSE grade := 'Grade E Status Tidak Lulus';
END IF;
RETURN grade;
END FGrade;
/
Select FGrade (90,69,73) from Dual;
6
Hal. 5 dari 6
12. Perintah PL/SQL (Explicit Cursor) untuk menampilkan Nama Karyawan, Nama Pekerjaan, Nama Departemen, gaji dari karyawan yang memiliki gaji diatas 12000 urut berdasarkan namanya.
Eksepsi: Jika tidak ditemukan maka akan menampilkan “Data Tidak Ada” (Bobot 20%), Hasil:
John Russell-Sales Manager-Sales-14000
Karen Partners-Sales Manager-Sales-13500
Lex De Haan-Administration Vice President-Executive-17000
Michael Hartstein-Marketing Manager-Marketing-13000
Neena Kochhar-Administration Vice President-Executive-17000
Steven King-President-Executive-24000
Jawaban:
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cursor IS
SELECT a.first_name, a.last_name, c.job_title, b.department_name, salary
FROM employees a, departments b
WHERE a.department_id = b.department_id
AND salary >= 12000;
fname employees.first_name%TYPE;
lname employees.last_name%TYPE;
dname departments.department_id%TYPE;
job employees.job_id%TYPE;
sal employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO fname, lname, dname, job, sal;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(fname||' '||lname||'-'||dname||'-'||job||'-'||sal);
END LOOP;
CLOSE emp_cursor;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('Data Tidak Ada');
END;
6
Hal. 6 dari 6
Entity Class
= Selamat Mengerjakan =
Hens