-
Notifications
You must be signed in to change notification settings - Fork 0
/
PLSQL 2.sql
103 lines (81 loc) · 3.39 KB
/
PLSQL 2.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
--1. Ketikkan kode program untuk membuat salinan tabel d_typedan beri nama tabel tersebut copy_d_type!
CREATE TABLE copy_d_types AS
SELECT * FROM d_types;
--2. Buat package manage_songs_pkgyang berisi kode program berikut:
--a.Procedure add_music_typeuntuk menambahkan baris data pada tabel copy_d_type.
--b.Function song_typeuntuk menampilkan output berupa deskripsi lagu dengan input judul lagu.
--c.Function untuk menghitung jumlah unique tipe lagu yang ada di dalam tabel songs.
--Catatan: semua procedure dan function harus bisa diakses dari luar package.
CREATE OR REPLACE PACKAGE manage_songs_pkg
IS
PROCEDURE add_music_type
(p_code IN d_types.code%TYPE,
p_description IN d_types.description%TYPE);
FUNCTION song_type
(p_title d_songs.title%TYPE) RETURN VARCHAR2;
PROCEDURE unique_code;
END manage_songs_pkg;
CREATE OR REPLACE PACKAGE BODY manage_songs_pkg IS
PROCEDURE add_music_type
(p_code IN d_types.code%TYPE,
p_description IN d_types.description%TYPE)
IS BEGIN
INSERT INTO copy_d_types(code, description)
VALUES(p_code, p_description);
END add_music_type;
FUNCTION song_type (p_title d_songs.title%TYPE) RETURN VARCHAR2 IS
v_description d_types.description%TYPE;
BEGIN
select description INTO
v_description FROM
d_songs e join copy_d_types d
ON e.type_code = d.code
WHERE title = p_title;
RETURN (v_description);
END song_type;
PROCEDURE unique_code IS
v_hasil NUMBER;
BEGIN
SELECT COUNT(DISTINCT type_code) INTO
v_hasil
from d_songs;
DBMS_OUTPUT.PUT_LINE(' The Number of unique songs type is ' || v_hasil);
END unique_code;
END manage_songs_pkg;
--3. Buat kode program untuk memanggil procedure add_music_typedengan memasukkan dua input yaitu code = 100 dan description = Dangdut:
BEGIN
manage_songs_pkg.add_music_type(100, 'Dangdut');
END;
--4. Buatlah kode program untuk mengeksekusi function song_type!Jika diberikan input: Coast to Coast
DECLARE
o_hasil VARCHAR2(50);
BEGIN
o_hasil := manage_songs_pkg.song_type('Its Finally Over');
DBMS_OUTPUT.PUT_LINE('Output = ' || o_hasil);
END;
--5. Buatlah kode program untuk mengeksekusi function unique_song_type!
BEGIN
manage_songs_pkg.unique_code;
END;
--6. Buatlah tabel log_delete_datayang harus memiliki kolom dengan tipe data sebagai berikut user_idvarchar2, logon_datedate, codenumber, dan descriptionvarchar2!
CREATE TABLE log_delete_data(
user_id VARCHAR2(20),
logon_date DATE,
code NUMBER,
description VARCHAR2(50));
--7. Buatlah row level trigger copy_d_type_triggeryang secara otomatis dijalankan setelah user menghapus data dari tabel copy_d_type! Trigger copy_d_type_triggerdapat mencatat data ke dalam tabel log_delete_data. Data yang dicatat yaitu: user, tanggal menghapus data, data yang dihapus (code dan description).
CREATE OR REPLACE TRIGGER copy_d_types_trigger
AFTER DELETE ON copy_d_types FOR EACH ROW
BEGIN
INSERT INTO log_delete_data(user_id, logon_date, code, description)
VALUES (user, sysdate, :OLD.code, :OLD.description);
END;
--8. Buatlah kode program untuk menghapus data dengan code = 100 pada tabel copy_d_type!
DELETE FROM copy_d_types
WHERE code = 100;
--9. Buatlah kode program untuk menampilkan baris data dari tabel log_delete_data!
SELECT * FROM log_delete_data;
--10. Buatlah kode program untuk menghapus package manage_songs_pkg!DROP PACKAGE manage_songs_pkg
DROP PACKAGE manage_songs_pkg;
--11. Buatlah kode program untuk menghapus trigger copy_d_type_trigger!
DROP TRIGGER copy_d_types_trigger;