uas oracleplsql kelpsi 1 1312500380 imam halim mursyidin

7
6 Hal. 1 dari 7 Fakultas Teknologi Informasi Universitas Budi Luhur Ujian Akhir Semester Tahun Ajaran Genap 2014/2015 Mata Kuliah : Oracle : Introduction SQL dan PL/SQL Kelompok : KU SI (2013) Dosen : Hendri Irawan, S. Kom, M.T.I. Tanggal Waktu Sifat : 7 Juli 2015 : 120 Menit : Buka Noted 1 Lembar A4 NIM : 1312500380 Nama : 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

Upload: imamhalim

Post on 10-Dec-2015

88 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

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:

Page 2: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

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

Page 3: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

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

Page 4: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

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;

Page 5: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

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;

Page 6: UAS OraclePLSQL KelpSI 1 1312500380 Imam Halim Mursyidin

6

Hal. 6 dari 6

Entity Class

= Selamat Mengerjakan =

Hens