Lab4-PL - SQL 000
Lab4-PL - SQL 000
along with the userid of the person performing the update and the date
the update. The log file is created using
create table parts_log(
pno
number(5),
username
char(8),
update_date date,
old_price
number(6,2),
new_price
number(6,2));
4. Test trig3.sql by typing:
update parts set price=55.00 where pno=10900;
select * from parts_log;
5. Create Grade book database using scripts of create_grade.sql and
insert_grades.sql
Problem one (40 points): Write a PL/SQL procedure that finds the student with the
highest overall average in every course. In case there is more than one student tied
for the highest average, the procedure should return all of the students. The results
should be returned in a PL/SQL table of records, where each record has the field
term, line number, course title, student ID, student name, and overall average.
Also, write an anonymous PL/SQL block that makes a call to the procedure and
prints the results to the standard output. Refer to p4.sql for some ideas.
Problem two (40 points): Write a trigger that fires when a row is deleted from the
enrolls table. The trigger should record the dropped students scores in a temporary
table, called deleted_scores, and cascade the deletes to ensure that the referential
integrity constraints are maintained.
hdate
date);
---------------------------------------------------------------- insert_object.sql
-- Grade Book Database; Create Tables Script
-- Chapter 2; Oracle 9i Programming -- A Primer
-by R. Sunderraman
--------------------------------------------------------------insert into o_employees values
(1000,
person_type('Jones',
address_type('123 Main St','Wichita','KS',67226),
phones_varray_type('316-555-1212',null,null)),
'12-DEC-95');
insert into o_employees values
(1001,
4
person_type('Smith',
address_type('101 Elm St','Fort Dodge','KS',60606),
phones_varray_type('316-555-2121','316-5552323',null)),
'01-JAN-92');
insert into o_employees values
(1002,
person_type('Brown',
address_type('100 Elm St','Kansas City','KS',50302),
phones_varray_type('780-555-1111',null,null)),
'01-SEP-94');
insert into o_parts values
(10506,'Land Before Time I',200,19.99,20);
insert into o_parts values
(10507,'Land Before Time II',156,19.99,20);
insert into o_parts values
(10508,'Land Before Time III',190,19.99,20);
insert into o_parts values
(10509,'Land Before Time IV',60,19.99,20);
insert into o_parts values
(10601,'Sleeping Beauty',300,24.99,20);
insert into o_parts values
(10701,'When Harry Met Sally',120,19.99,30);
insert into o_parts values
(10800,'Dirty Harry',140,14.99,30);
insert into o_parts values
(10900,'Dr. Zhivago',100,24.99,30);
insert into o_customers values
(1111,
person_type('Charles',
address_type('123 Main St','Wichita','KS',67226),
phones_varray_type('316-636-5555',null,null)));
insert into o_customers values
(2222,
person_type('Bertram',
address_type('237 Ash Avenue','Wichita','KS',67226),
phones_varray_type('316-689-5555','316-6895556',null)));
insert into o_customers values
(3333,
person_type('Barbara',
address_type('111 Inwood St','Fort Dodge','KS',60606),
phones_varray_type('316-111-1234','316-1111235',null)));
insert into o_orders values
(1020,
5
odetails_ntable_type(odetails_type(10506,1),
odetails_type(10507,1),
odetails_type(10508,2),
odetails_type(10509,3)),
1111,1000,'10-DEC-94','12-DEC-94');
insert into o_orders values
(1021,
odetails_ntable_type(odetails_type(10601,4)),
1111,1000,'12-JAN-95','15-JAN-95');
insert into o_orders values
(1022,
odetails_ntable_type(odetails_type(10601,1),
odetails_type(10701,1)),
2222,1001,'13-FEB-95','20-FEB-95');
insert into o_orders values
(1023,
odetails_ntable_type(odetails_type(10800,1),
odetails_type(10900,1)),
3333,1000,'20-JUN-97',null);
Appendix B;
---------------------------------------------------------------- create_grade.sql
-- Grade Book Database; Create Tables Script
-- Chapter 2; Oracle 9i Programming -- A Primer
-by R. Sunderraman
--------------------------------------------------------------drop table catalog cascade constraints;
create table catalog (
cno
varchar2(7) not null,
ctitle
varchar2(50),
primary key (cno));
drop table students cascade constraints;
create table students (
sid
varchar2(5) not null,
fname
varchar2(20),
lname
varchar2(20) not null,
minit
char,
primary key (sid));
drop table courses cascade constraints;
create table courses (
term
varchar2(10) not null,
lineno
number(4) not null,
cno
varchar2(7) not null,
a
number(2) check(a > 0),
b
number(2) check(b > 0),
c
number(2) check(c > 0),
d
number(2) check(d > 0),
6
---------------------------------------------------------------- insert_grades.sql
-- Grade Book Database: Insert Rows
-- Chapter 2; Oracle 9i Programming -- A Primer
-by R. Sunderraman
--------------------------------------------------------------insert into catalog values
('csc226','Introduction to Programming I');
insert into catalog values
('csc227','Introduction to Programming II');
insert into catalog values
('csc343','Assembly Programming');
insert into catalog values
('csc481','Automata and Formal Languages');
insert into catalog values
('csc498','Introduction to Database Systems');
insert into catalog values
7
('5555','sp97',1031);
insert into enrolls values
('6666','sp97',1031);
insert into scores values
('1111','f96',1031,'exam1',90);
insert into scores values
('1111','f96',1031,'quizzes',75);
insert into scores values
('1111','f96',1031,'final',95);
insert into scores values
('2222','f96',1031,'exam1',70);
insert into scores values
('2222','f96',1031,'quizzes',40);
insert into scores values
('2222','f96',1031,'final',82);
insert into scores values
('4444','f96',1031,'exam1',83);
insert into scores values
('4444','f96',1031,'quizzes',71);
insert into scores values
('4444','f96',1031,'final',74);
insert into scores values
('1111','f96',1032,'programs',400);
insert into scores values
('1111','f96',1032,'midterm',95);
insert into scores values
('1111','f96',1032,'final',99);
insert into scores values
('2222','f96',1032,'programs',340);
insert into scores values
('2222','f96',1032,'midterm',65);
insert into scores values
('2222','f96',1032,'final',95);
insert into scores values
('3333','f96',1032,'programs',380);
insert into scores values
('3333','f96',1032,'midterm',75);
insert into scores values
('3333','f96',1032,'final',88);
insert into scores values
('5555','sp97',1031,'paper',80);
insert into scores values
('5555','sp97',1031,'project',90);
insert into scores values
('6666','sp97',1031,'paper',80);
insert into scores values
('6666','sp97',1031,'project',85);
commit;