Module002 LaboratoryExercise002
Module002 LaboratoryExercise002
For this laboratory exercise, you will use the same database schema of the Pine Valley Furniture Company.
The database schema is provided for you, which can be downloaded from this module.
Construct the following PL/SQL programs and be able to provide a screenshot of the output.
1. Create a procedure that displays the name of the customer with the highest amount of orders among
all customers. Name the procedure PRINT_CUST_PROC. The procedure will also invoke a function
called GET_HIGHORDER_FUNC that retrieves the name and total amount ordered of customer with the
highest amount of order. Invoke the procedure and view the results.
2. Create a trigger called VALIDATE_DATEHIRED_TRIG to validate the hired date of an employee when a
new row is added to the EMPLOYEE table. If the employee hired date is more than current date,
display an appropriate message that prompts the user regarding the error and include an exception.
The new row will be inserted to the table only if the hired date is valid. Test the trigger by inserting a
new row to the EMPLOYEE table with an invalid hired date.
3. Do the same in Item #1 to validate employee’s date of birth. This time you create a procedure called
VAL_BDAY_PROC that will validate the employee’s date of birth. The procedure accepts the date of
birth as a parameter. Then create a trigger called VALIDATE_BDAY_TRIG that invokes the
VAL_BDAY_PROC. Test the trigger by inserting a new row to the EMPLOYEE table with an invalid
birthday.
4. Modify the PRODUCT table by adding a new column named PRODUCT_ONHAND with data type
NUMBER(3,0). Add the value 10 in each row of the PRODUCT_ONHAND column. Create a function
called GET_QUANTITY_FUNC that retrieves the on hand value of a specific product. Create a procedure
called CHECK_ONHAND_PROC that ensures that the quantity ordered by customer is less than or equal
to the on hand value of the product. Invoke the GET_QUANTITY_FUNC and CHECK_ONHAND_PROC
inside a trigger and name it as CHECK_ONHAND_TRIG. If the quantity ordered by the customer is not
greater than the quantity on hand, update the column PRODUCT_ONHAND in the PRODUCT table by
subtracting quantity ordered from product on hand. Include exception handling and test the trigger by
inserting new rows to the ORDERLINE table with ordered quantity 11 and 5.
Course Code MIT412
Create an AFTER trigger that records all the information about the action performed by the user who
logged in to the database. Perform at least 10 different DML operations on the PVFC database to test
the trigger. Then display the content of the EVENTLOGS table. Sample output: