DBM 405 Lab 3 Procedures and Functions Advanced Database Oracle

Availability: In stock

Regular Price: $20.00

Special Price: $15.00

OR

DBM 405 Lab 3 Step 1 Creating First  Procedure

Double click on above image to view full picture

Zoom Out
Zoom In

More Views

Quick Overview

DBM 405 Lab 3 Procedures and Functions Advanced Database Oracle

Step 1: Creating the First Procedure
Your first procedure is to be named MOVIE_RENTAL_SP and is going to provide functionality to process movie rentals. Based on data that will represent the movie ID, member ID, and payment method your procedure will need to generate a rental ID and then insert a new row of data into the mm_rental table. The process will also need to update the quantity column in the mm_movie table to reflect that there is one less copy of the rented movie in stock. Along with the processing, you will also need to define some user-defined exception handlers that will be used in validating the input data. Since you may need to recreate your procedure several times during the debugging process, it is suggested that you use the CREATE OR REPLACE syntax at the beginning of the CREATE statement.

The following steps will help you in setting up your code.
1. You will need to define three parameters, one each for movie ID, member ID, and payment method. Make sure that each one matches the data type of the associated column in the database tables.
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will need to define four user-defined exceptions; one for unknown movies, one for unknown member, one for unknown payment method, and one for if a movie is unavailable.
4. You will need to validate each of the three pieces of data passed to the procedure. One easy way to do this might be to use a SELECT statement with the COUNT function to return a value into a variable based on a match in the database table against the piece of data that you are validating. If the query returns a zero then there is no match and the data is invalid; any value greater than zero means a match was found and thus the data is valid. You will need the following validations.
    1. Validate the movie ID to make sure it is valid. If not then raise the unknown movie exception.
    2. Validate the member ID to make sure one exists for that ID. If not then raise the unknown member exception.
    3. Validate the payment method to make sure it exists. If not then raise the unknown payment method exception.
    4. Check the movie quantity to make sure that there is a movie to be rented for the movie ID. If not then raise the unavailable movie exception.
    5. If all the data passes validation then you will need to create a new rental ID. This process should be in a nested block with its own EXCEPTION section to catch a NO_DATA_FOUND exception if one should happen. You can generate a new rental ID by finding the largest rental ID value in the mm_rental table (Hint: MAX function) and then increasing that value by one. The NO_DATA_FOUND exception would only be raised if there were no rental IDs in the table.
    6. Now you are ready to insert a new row of data into the mm_rental table. Use the SYSDATE function for the checkout date and NULL for the check-in date.
    7. Now, update the mm_movie table to reflect one less movie for the associated movie ID.
    8. Finally, you will need to set up an EXCEPTION section for all of your exception handling. For each exception output, you want to state what the problem is, the invalid data value, and a note that the rental cannot proceed. For example, for an invalid movie ID number, you might say, "There is no movie with id: 13 - Cannot proceed with rental". You also want to include a WHEN OTHERS exception handler.

Compile and check your code. If you get a PROCEDURE CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 2: Testing the First Procedure
You will need to test for scenarios that will allow both a clean movie rental and test each exception. This means that you will need to run at least five test cases.

One each for the following:
1. No movie for the ID supplied (use 13, 10, and 2 for the parameters).
2. No member for the ID supplied (use 10, 20, and 2 for the parameters).
3. No payment method for the ID supplied (use 10, 10, and 7 for the parameters).
4. A successful rental (use 5, 10, and 2 for the parameters).
5. No movie available for the ID supplied (use 5, 11, and 2 for the parameters). Since there is only one movie available for ID 5, you will get this exception.
Your output from the testing should look similar to (this would be the output for the first test above):
exec movie_rent_sp(13, 10, 2);
Output:
There is no movie with id: 13
Cannot proceed with rental
PL/SQL procedure successfully completed.

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.


Step 3: Creating the Second Procedure
Your second procedure should be named MOVIE_RETURN_SP and should facilitate the process of checking a movie rental back in. For this procedure, you will only need to pass one piece of data to the procedure; the rental ID. You will need two user-defined exceptions; one for no rental record and one for already returned. You will be able to use several of the same techniques you used in the first procedure for your validation.

The following steps will help in setting up your code.
1. You will need to define only one parameter for the rental ID number. Make sure that it matches the data type of the associated column in the database table.
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will need to define the two user-defined exceptions mentioned above.
4. You will need to validate the rental ID that is passed to the procedure. If it is not a valid one then raise the associated exception.
5. If it is valid then get the movie ID and check-in date from the mm_rental table.
6. Now, check the check-in date to make sure that it is NULL. If it is not then raise the associated exception.
7. If everything checks out then update the mm_rental table for the rental ID you have and use the SYSDATE function for the check-in date.
8. Now, you can update the quantity in the mm_movie table for the associated movie ID to reflect that the movie is back in stock.
9. Last, set up your exception section using appropriate error message text and data.

Compile and check your code. If you get a PROCEDURE CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 4: Testing the Second Procedure
You will need to test for scenarios that will allow both a clean rental return and test each exception. This means that you will need to run at least three test cases.

One each for the following:
1. No rental for the ID supplied (use 20 for the parameter).
2. A successful rental return (use 1 for the parameter).
3. Try to return the same rental in Step 2.
You output from the testing should look similar to (this would be the output for the first test above):
exec movie_return_sp(20);
Output:
There is no rental record with id: 20
Cannot proceed with return
PL/SQL procedure successfully completed.

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.


Step 5: Creating the Function
Your function should be named MOVIE_STOCK_SF and will be used to return a message telling the user whether a movie title is available or not based on the movie ID passed to the function. The exception handling that will be needed is for NO_DATA_FOUND but we are going to set it up as a RAISE_APPLICATION_ERROR.

The following steps will help in setting up your code.
1. You will need to define only one parameter for the movie ID number. Make sure that it matches the data type of the associated column in the database table. Also, since you will be returning a notification message, you will want to make sure your RETURN statement references a data type that can handle that (Hint: variable length data type).
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will not be doing any validation so the first thing you need to do is retrieve the movie title and quantity available from the mm_movie table based on the ID passed to the function.
4. Now, you need to determine if any are available. IF the value in the quantity column is greater than zero then you will be returning a message saying something like "Star Wars is available: 0 on the shelf", ELSE if the value is zero then you should return a message saying something like "Star Wars is currently not available". Hint: A good way to return a test string is to assign it to a variable and then simply use the variable name in the RETURN clause.
5. Finally, set up your exception section to use a RAISE_APPLICATION_ERROR for the NO_DATA_FOUND exception handler. Assign an error number of -20001 to it and an error message that states there is no movie available for the ID (be sure to include the id in the message).

Compile and check your code. If you get a FUNCTION CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 6: Testing the Function
You will need to test for all three possible scenarios.

1. Test for a movie in stock using movie ID 11.
2. Test for a movie not in stock using movie ID 5 (from your tests of the second procedure above, the quantity should be 0).
3. Test for an invalid movie ID using movie ID 20.
For test number 2, you may need to manipulate the quantity amount in the database, which will be fine.
Test your function by using a select statement against the DUAL table like in the example below:
select movie_stock_sf(20) from dual;

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.
This concludes the Lab for Week 3.
 
Deliverables
Your deliverable submission should consist of your Lab 3 script file and the spooled output files described at the beginning of the lab. If you would like, you can include both files in a single ZIP file to be submitted to the Week 3 Lab Dropbox.

Regular Price: $20.00

Special Price: $15.00

Details

DBM 405 Lab 3 Procedures and Functions Advanced Database Oracle

Step 1: Creating the First Procedure
Your first procedure is to be named MOVIE_RENTAL_SP and is going to provide functionality to process movie rentals. Based on data that will represent the movie ID, member ID, and payment method your procedure will need to generate a rental ID and then insert a new row of data into the mm_rental table. The process will also need to update the quantity column in the mm_movie table to reflect that there is one less copy of the rented movie in stock. Along with the processing, you will also need to define some user-defined exception handlers that will be used in validating the input data. Since you may need to recreate your procedure several times during the debugging process, it is suggested that you use the CREATE OR REPLACE syntax at the beginning of the CREATE statement.

The following steps will help you in setting up your code.
1. You will need to define three parameters, one each for movie ID, member ID, and payment method. Make sure that each one matches the data type of the associated column in the database tables.
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will need to define four user-defined exceptions; one for unknown movies, one for unknown member, one for unknown payment method, and one for if a movie is unavailable.
4. You will need to validate each of the three pieces of data passed to the procedure. One easy way to do this might be to use a SELECT statement with the COUNT function to return a value into a variable based on a match in the database table against the piece of data that you are validating. If the query returns a zero then there is no match and the data is invalid; any value greater than zero means a match was found and thus the data is valid. You will need the following validations.
    1. Validate the movie ID to make sure it is valid. If not then raise the unknown movie exception.
    2. Validate the member ID to make sure one exists for that ID. If not then raise the unknown member exception.
    3. Validate the payment method to make sure it exists. If not then raise the unknown payment method exception.
    4. Check the movie quantity to make sure that there is a movie to be rented for the movie ID. If not then raise the unavailable movie exception.
    5. If all the data passes validation then you will need to create a new rental ID. This process should be in a nested block with its own EXCEPTION section to catch a NO_DATA_FOUND exception if one should happen. You can generate a new rental ID by finding the largest rental ID value in the mm_rental table (Hint: MAX function) and then increasing that value by one. The NO_DATA_FOUND exception would only be raised if there were no rental IDs in the table.
    6. Now you are ready to insert a new row of data into the mm_rental table. Use the SYSDATE function for the checkout date and NULL for the check-in date.
    7. Now, update the mm_movie table to reflect one less movie for the associated movie ID.
    8. Finally, you will need to set up an EXCEPTION section for all of your exception handling. For each exception output, you want to state what the problem is, the invalid data value, and a note that the rental cannot proceed. For example, for an invalid movie ID number, you might say, "There is no movie with id: 13 - Cannot proceed with rental". You also want to include a WHEN OTHERS exception handler.

Compile and check your code. If you get a PROCEDURE CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 2: Testing the First Procedure
You will need to test for scenarios that will allow both a clean movie rental and test each exception. This means that you will need to run at least five test cases.

One each for the following:
1. No movie for the ID supplied (use 13, 10, and 2 for the parameters).
2. No member for the ID supplied (use 10, 20, and 2 for the parameters).
3. No payment method for the ID supplied (use 10, 10, and 7 for the parameters).
4. A successful rental (use 5, 10, and 2 for the parameters).
5. No movie available for the ID supplied (use 5, 11, and 2 for the parameters). Since there is only one movie available for ID 5, you will get this exception.
Your output from the testing should look similar to (this would be the output for the first test above):
exec movie_rent_sp(13, 10, 2);
Output:
There is no movie with id: 13
Cannot proceed with rental
PL/SQL procedure successfully completed.

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.


Step 3: Creating the Second Procedure
Your second procedure should be named MOVIE_RETURN_SP and should facilitate the process of checking a movie rental back in. For this procedure, you will only need to pass one piece of data to the procedure; the rental ID. You will need two user-defined exceptions; one for no rental record and one for already returned. You will be able to use several of the same techniques you used in the first procedure for your validation.

The following steps will help in setting up your code.
1. You will need to define only one parameter for the rental ID number. Make sure that it matches the data type of the associated column in the database table.
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will need to define the two user-defined exceptions mentioned above.
4. You will need to validate the rental ID that is passed to the procedure. If it is not a valid one then raise the associated exception.
5. If it is valid then get the movie ID and check-in date from the mm_rental table.
6. Now, check the check-in date to make sure that it is NULL. If it is not then raise the associated exception.
7. If everything checks out then update the mm_rental table for the rental ID you have and use the SYSDATE function for the check-in date.
8. Now, you can update the quantity in the mm_movie table for the associated movie ID to reflect that the movie is back in stock.
9. Last, set up your exception section using appropriate error message text and data.

Compile and check your code. If you get a PROCEDURE CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 4: Testing the Second Procedure
You will need to test for scenarios that will allow both a clean rental return and test each exception. This means that you will need to run at least three test cases.

One each for the following:
1. No rental for the ID supplied (use 20 for the parameter).
2. A successful rental return (use 1 for the parameter).
3. Try to return the same rental in Step 2.
You output from the testing should look similar to (this would be the output for the first test above):
exec movie_return_sp(20);
Output:
There is no rental record with id: 20
Cannot proceed with return
PL/SQL procedure successfully completed.

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.


Step 5: Creating the Function
Your function should be named MOVIE_STOCK_SF and will be used to return a message telling the user whether a movie title is available or not based on the movie ID passed to the function. The exception handling that will be needed is for NO_DATA_FOUND but we are going to set it up as a RAISE_APPLICATION_ERROR.

The following steps will help in setting up your code.
1. You will need to define only one parameter for the movie ID number. Make sure that it matches the data type of the associated column in the database table. Also, since you will be returning a notification message, you will want to make sure your RETURN statement references a data type that can handle that (Hint: variable length data type).
2. You will have several other variables that will need to be identified and defined. It might be easier to read through the rest of the specs before you start trying to define these (look for hints in the specifications).
3. You will not be doing any validation so the first thing you need to do is retrieve the movie title and quantity available from the mm_movie table based on the ID passed to the function.
4. Now, you need to determine if any are available. IF the value in the quantity column is greater than zero then you will be returning a message saying something like "Star Wars is available: 0 on the shelf", ELSE if the value is zero then you should return a message saying something like "Star Wars is currently not available". Hint: A good way to return a test string is to assign it to a variable and then simply use the variable name in the RETURN clause.
5. Finally, set up your exception section to use a RAISE_APPLICATION_ERROR for the NO_DATA_FOUND exception handler. Assign an error number of -20001 to it and an error message that states there is no movie available for the ID (be sure to include the id in the message).

Compile and check your code. If you get a FUNCTION CREATED WITH COMPILATION ERRORS message then type in SHOW ERRORS and look in your code for the line noted in the error messages (be sure to compile your code with the session command SET ECHO ON). Once you have a clean compile then your are ready to test.


Step 6: Testing the Function
You will need to test for all three possible scenarios.

1. Test for a movie in stock using movie ID 11.
2. Test for a movie not in stock using movie ID 5 (from your tests of the second procedure above, the quantity should be 0).
3. Test for an invalid movie ID using movie ID 20.
For test number 2, you may need to manipulate the quantity amount in the database, which will be fine.
Test your function by using a select statement against the DUAL table like in the example below:
select movie_stock_sf(20) from dual;

Be sure that when you have verified that everything works, you run your testing in a spools session and save the file to be turned in.
This concludes the Lab for Week 3.
 
Deliverables
Your deliverable submission should consist of your Lab 3 script file and the spooled output files described at the beginning of the lab. If you would like, you can include both files in a single ZIP file to be submitted to the Week 3 Lab Dropbox.

Product Tags

Use spaces to separate tags. Use single quotes (') for phrases.