Question 1 (25 marks)
Write an anonymous block that places a substitution variable (&) into a local variable of type varchar2. You will need to convert the types and round them to nearest tens unit. For example 84.4555 would be 84.5. You should check the value entered in the local variable and output different messages depending on the value provided. The anonymous block is a simple grade calculator with the following rules.
If value less than 44.5 output the following message “Resulting Grade for VALUE marks is ‘F’”
If value is between 44.5 and 49.4 output the following message “Resulting Grade for VALUE marks is ‘IS’”
If value is between 49.5 and 64.4 output the following message “Resulting Grade for VALUE marks is ‘C’”
If value between 64.5 and 74.4 output the following message “Resulting Grade for VALUE marks is ‘B’”
If value is between 74.5 and 84.4 output the following message “Resulting Grade for VALUE marks is ‘A’”
If value is between 84.5 and 100 output the following message “Resulting Grade for VALUE marks is ‘HD’”
If the value does not fall in the range of 0 - 100 print an error message “ONLY MARKS BETWEEN 0 AND 100 ACCEPTED)”
Question 2 (25 marks)
Write an anonymous block that meets the following specification:
1.Using an explicit cursor, retrieve each row from the i_car table.
2.Create a local variable that inherits the structure of the i_car table (using %ROWTYPE attribute). Place each row returned into this variable.
3.Using an implicit cursor, calculate the number of bookings that belong to each car.
4.Display the car registration, car group name, model name and the number of bookings for all the cars that have two or more bookings.
5.If the car has no bookings sum up the number of cars without bookings.
6.At the end of the run display a message “There are VALUE cars that have no bookings recorded”.
Question 3 (25 marks)
Create a bound/host (or global) variable named G_NEWCOST.
Write an anonymous block that declares two local variables: A3_COST and B3_COST. The data types of these two variables should be the same as the data type of the column cost in i_car table. Also declare a constant called DEPRECIATION with value 15.25 to be used for deprecation calculation.
In your BEGIN section, write two SELECT queries to obtain value of the cost column where car_group_name is ‘A3’ and ‘B3’ and assign the corresponding values to A3_COST and B3_COST variables.
Now use the IF-THEN statement to compare the two variables to find out which one has a highest value. Calculate the new cost by using constant DEPRECIATION to calculate the new value total cost * ((100 - DEPRICATION)/100) to the higher value and assign the new value to bound/host variable G_NEWCOST.
Display a message in the following format from your code block: “The car group CARGROUP has total cost of $TOTALCOST.XX and has been depreciated to $G_NEWCOST.XX”
The CARGROUP should display the highest car group (A3 or B3 depending on values).
The TOTALCOST will be the total calculated in the SELECT query statement.
G_NEWCOST will be the derived value after decreasing the cost with the DEPRECIATION value. Format the G_NEWCOST value to 2 decimal places.
The XX represent the decimal places in the format.
Using the PRINT command, output the value in the host variable (G_NEWCOST) after the anonymous block has run.
Question 4 (25 marks)
Write a PL/SQL solution that displays the registration and the maximum and the minimum miles travelled by a car during the rental period for all the bookings where the booking has been paid for.
The output from the anonymous block will be two messages. One message will display the information for the maximum miles driven and one for the minimum miles driven in the following format.
“The maximum miles driven was MAXIMUM by car REGISTRATION over DAYS day’s”
“The minimum miles driven was MINIMUM by car REGISTRATION over DAYS day’s”
Where MAXIMUM is the maximum miles calculated from the bookings table.
MINIMUM is the minimum miles calculated in the bookings table.
DAYS is the rental_period for the maximum and minimum miles travelled in the booking table.