Showing posts with label PL/SQL. Show all posts
Showing posts with label PL/SQL. Show all posts

Tuesday, August 31, 2010

Troubleshoot ORA-06512: at line

ORA-06512 is a common error faced by Oracle DBA, programmers as well as end users. ORA-06512 does not identify the root cause of the problem, rather it only prints the line number where the errors or exception happened. So just before ORA-06512 there will be additional error which we may need to investigate. If the errors come from any function or package or package body or procedure then with ORA-06512 there exists the name of the function or package or package body or procedure as well as the line number of those objects where error is occurred.

A simple demonstration of ORA-06512 error using PL/SQL anonymous block is shown below.
SQL> declare
2 var1 number(3);
3 begin
4 var1:=1000;
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at line 4
As this one is simply anonymous block and no package, function or procedure involved, so it does not generate any additional ORA-06512 error. However, just before ORA-06512 error there contains the root cause of the problem which is due to "ORA-06502: PL/SQL: numeric or value error: number precision too large". ORA-06512 simply notifies the problem happened at line number 4 of the anonymous block because we declare var1 length as 3 digits but we were going to insert 4 digits.

Now let's look a small variation of above error. Same code with a procedure.
SQL> create or replace procedure ORA06512_demo as
2 var1 number(3);
3 begin
4 var1:=1000;
5 end;
6 /

Procedure created.

SQL> exec ORA06512_demo
BEGIN ORA06512_demo; END;

*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at "ARJU.ORA06512_DEMO", line 4
ORA-06512: at line 1
Here notice as the code is run by a procedure and procedure contains same error so ORA-06512 is generated twice. If there is several ORA-06512 error then you should first take care of the first one. It is specified in which procedure as well as in which line problem happened. Then step by step you should fix second, third and so on if after fixing first one you get any more. Here "ORA-06512: at line 1" error is generated for the statement "exec ORA06512_demo".

To make you more clear, I will show you a more detail example.
SQL> create or replace procedure ORA06512_DEMO_SUB2(var1in number, string1in varchar2) as
2 var1 number;
3 var2 number;
4 var3 number;
5 begin
6 var1:=var1in;
7 var2:=string1in;
8 var3:='a';
9 end;
10 /

Procedure created.

SQL> create or replace procedure ORA06512_DEMO_SUB1(string1 varchar2) as
2 var1 number ;
3 begin
4 var1:=100;
5 ORA06512_DEMO_SUB2(var1,string1);
6 end;
7 /

Procedure created.

SQL> create or replace procedure ORA06512_DEMO_MAIN as
2 begin
3 ORA06512_DEMO_SUB1('This is a string');
4 end;
5 /

Procedure created.

SQL> exec ORA06512_DEMO_MAIN;
BEGIN ORA06512_DEMO_MAIN; END;

*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "ARJU.ORA06512_DEMO_SUB2", line 7
ORA-06512: at "ARJU.ORA06512_DEMO_SUB1", line 5
ORA-06512: at "ARJU.ORA06512_DEMO_MAIN", line 3
ORA-06512: at line 1
Here you see the first ORA-06512 is generated for the procedure "ARJU.ORA06512_DEMO_SUB2" and line 7. So you should take care of that first. The main cause of the problem is for ORA-06502 which is shown just before very first of ORA-06512 error. So fix the "ARJU.ORA06512_DEMO_SUB2" procedure first by changing datatype and then "ARJU.ORA06512_DEMO_SUB1" and so on.

Let's try to fix the problem. So deal with "ARJU.ORA06512_DEMO_SUB2" procedure. We see input parameter string1in is datatype of varchar2. Within procedure it is assigned to variable var2 which is number datatype, so we need to change it to varchar2. Also var3 is number datatype, so we will assign number variable into it not any char type. So doing these two changes and then run the main procedure ORA06512_DEMO_MAIN.
SQL> create or replace procedure ORA06512_DEMO_SUB2(var1in number, string1in varchar2) as
2 var1 number;
3 var2 varchar2(20);
4 var3 number;
5 begin
6 var1:=var1in;
7 var2:=string1in;
8 var3:=10;
9 end;
10 /

Procedure created.

SQL> exec ORA06512_DEMO_MAIN;

PL/SQL procedure successfully completed.
It looks perfect.

Related Documents
ORA-39127 ORA-04063 ORA-06508 ORA-06512 package body "WMSYS.LT_EXPORT_PKG" has errors
ORA-13600, QSM-00775, ORA-06512 when running DBMS_ADVISOR
Expdp fails with ORA-31626, ORA-31633, ORA-06512, ORA-01031
Export Full=y fails with PLS-00201 ORA-06510 ORA-06512
Expdp fails with ORA-39001,ORA-39169,ORA-39006,ORA-39022

Friday, December 4, 2009

Database design practice for a Movie Company


The More Movies company has hired you to redesign a database system for them that can facilitate the process of renting out and returning movies.
They already have an Oracle database that stores information about movies, members who rent the movies, and the rentals. This is the database that you already have become familiar with, which includes tables: MM_MOVIE, MM_MOVIE_TYPE, MM_MEMBER, MM_RENTAL, and MM_PAY_TYPE. The machine on which this database is running has both the server and client Oracle9i software installed on it. Every night one of the clerks updates data to account for the day's activities, and periodically the reports are run to summarize business, show renting trends, etc. Access to the database is accomplished using SQL*Plus environment that is very similar to the iSQL*Plus that you know from the previous database course. This business process worked ok for as long as More Movies stayed a very small business.
However, the company has grown substantially, expanding its operations to more movie selection and more members, and consequently it has moved to a larger location. It occupies a two-story shop now. It became very impractical to record rentals at the end of the day. They also do not want to rely on clerks knowing any SQL programming in order to record updates and run reports.
In short, there is a need for a more convenient database system. The machine on which database is currently running is powerful enough to host the database server. The database should be accessible from four checkout stations that process renting out and returning movies. This system should have an easy-to-use graphical user interface access.
For the lab you will be creating several documents to be submitted for the lab. Be sure that you save the documents with your last name and lab7 in the file name. Place all documents into a single ZIP file and submit for grading.

L A B S T E P

Step 1:


Describe what software you propose to use to develop the front-end GUI application for the new system? Be sure to justify your choice. Keep in mind portability, ease of use, scalability and ability to update. What other options have you considered?


Step 2:


In setting up the servers and environment do you propose to use middleware? If so, what kind, and where would you deploy it?


Step 3:


Provide a system diagram of the proposed system. Be sure to include such things as servers (application and database), user clients, and any other special pieces to the puzzle that you might think of.





Step 4:


Provide a detailed design of the GUI screen that facilitates renting out and returning movies. For every button, or other component that provides reaction to user's events, give detailed pseudo-code. Also, clearly indicate where would you use any of the PL/SQL code that you developed for the labs in this course. If the application platform you have selected does not support PL/SQL then describe how you would take the processing developed in the procedures and functions and incorporate it into the system.

Oracle UTL_FILE package practice examples


To practice the exercise you need the schema. You can found the schema from the post http://arjudba.blogspot.com/2009/12/basic-oracle-sql-exercise.html and before practice these exercises you must first run those sqls so that you can get tables and data to practice. After you know the answer of each step please post your PL/SQL inside comment section so that other can check and understand it and you will be more clear about it.


Scenario/Summary
This week we are going to make a change to the processing in our schema by altering one of the procedures contained in the package previously created. At this point we have dealt with procedures that required use to pass parameter values each time the procedure was executed. This type of processing greatly limits the ability to process large amounts of data efficiently. The lab this week will introduce you to a couple of the procedures contained in the UTL_FILE package that is part of Oracle's group of built-in packages. By using the GET_LINE and PUT_LINE procedures contained in UTL_FILE you will be able to process multiple records from a file and create results report on the events performed by your movie rental procedure with one call to execute the procedure.
For the lab you will need to create a script file containing the PL/SQL code that will address the lab steps below. Run the script file in your SQL*Plus session using the SET ECHO ON session command at the beginning to capture both the PL/SQL block code and output from Oracle after the block of code has executed. You will only need to recompile both the package specifications and the package body since you will be making a change to the movie_rental_sp procedure in the specifications. You will be running tests to verify that the changes to your procedure are working as they should. Spool your output and name your files with your last name plus lab 5 and give the file a text (txt) extension. For example, if you last name was Johnson then the file would be named johnson_lab5.txt. Submit both the spooled output files AND the script file for grading of the lab.
IMPORTANT: Before beginning the lab you will want to refresh the tables in your schema by running the movierental.sql script.


L A B S T E P

Step 1: Setting up your environment



Before you can effectively use the procedures in UTL_FILE to work with external files for this lab you will need to set up your environment. The first step of this process will involve creating a directory folder under the R drive which is the mapped drive for DBM405. The second part of the process will involve creating the Directory Object in Oracle to point to this folder. To accomplish this task please follow the steps listed here.
1. Create the directory folder (You can refer to the SQL*Plus Tutorial in week 1 for visuals of this process)


  • First, log into iLab and open up your Oracle folder. Next open Windows Explorer and expand the R drive tree.




  • Under the R create your own folder by selecting File/New/Folder from the main menu bar. Name your folder using a unique name such as DBM405_lastname_lab6 or some other unique name. Make sure that there are no other folders under the R drive with the same name as yours. You are the only person who has access to your folder, but the name must be unique.


2. Create the Directory Object


  • In Windows Explorer (the one in the Oracle folder in iLab) you want to take note of the path name for the R: drive. It will be DBM405\ followed by the session you are in. For example if you are in Spring A the path would be DBM405\SPRINGA, or if Spring B it would be DBM405\SPRINGB. This is important because this will be used to define the path for the Directory Object. Remember that the R: drive is really mapped to the Oracle server F: drive.




  • Start up a session in SQL*Plus and log into your user schema.




  • Use the following SQL command to create the Directory Object that you will use for this lab.


Create or Replace Directory DBM405_YOURNAME_DIR As 'F:\DBM405\session\YourFolderName';
IMPORTANT: Replace the word YOURNAME with your actual last name, the word session with the session name found in the path for the R: drive (see first bullet above), and the word YourFolderName with the name of the folder you created in part 1 above. For example, if your last name were SMITH and your were taking this course is Spring session A and the folder you create was named DBM405_SMITH_lab6 the statement would be:
Create or Replace Directory DBM405_SMITH_DIR As 'F:\DBM405\SPRINGA\DBM405_SMITH_LAB6';
3. Setting up the data file


  • Download the file "movierentaldata.txt" from Doc Sharing and place this file in the directory folder you created above in part 1.


You have now set up Oracle to work with the procedures in UTL_FILE that we will use for this lab.


Step 2: Changing the Package Specifications




We are now ready to start updating the package that we modified in Lab 5 so that it will allow us to read a file and make changes to the database. To do this we will need to make changes to the parameter list of the MOVIE_RENT_SP procedure to reflect a new process. Since we will be changing the parameter list we will need to make changes to the Package Specifications as well as to the Package Body.
For the change to the Package Specifications you will need to define a parameter for the Directory Object, one for the input file, and one for an output file that will be used for a verifications report. Each of these parameters can be defined as VARCHAR2 data types.


Step 3: The DECLARE (IS) section of the procedure




Now we can move on to the Package Body and the MOVIE_RENT_SP procedure itself. The first thing you want to do is make sure that the parameter list in the procedure matches the parameter list that you just changed in the Specifications in Step 2. The two parameter lists must match exactly or you will get errors when trying to compile the Package Body.
When you read in the file you will need several variables to handle both the record and the various pieces of data in the record. When the record is read in you will need to substring each piece of data from the record into a variable which then can be used like your were using the parameters before. To keep form having to make numerous changes in the code you might want to consider using the actual parameter names from your parameter list in the code from lab 5. For example, if the parameter name for the movie id was P_MOVIE_ID then you would create a variable named P_MOVIE_ID. Each of the variables for movie id, member id, and payment method can be cast to the data type in the MM_RENTAL table. For example:
p_movie_id mm_rental.movie_id%TYPE;
You will also need a variable to hold the record data that will be read in and a variable to hold record data that will be written out. Check the length of the data in the movierentaldata.txt file to determine the length for the input data variable. For the output data variable you can use your own judgement, but using VARCHAR2(80) would probably be more than adequate.
The last thing you will need to add is a variable to act as the handle for the input record and one for the output record. Remember that the name for these is not important, but they must be based on the FILE_TYPE data type.


Step 4: Opening the files




Now we move to the body of the code and the BEGIN section. The first thing that needs to happen is to open both the files. Remember that we are going to set up our processing just like we would any IPO logic, i.e., we need to open the files, read a record, process the data, read the next record and repeat this process until there is no more data.
To accomplish this first step of opening the files you will need to initialize the two variables you declare to handle the files. For the input file you will need to use the FOPEN program. Remember that you have to pass this program three variables; the name of the parameter for the directory object, the name of the parameter for the input file, and the mode the file is to be in. For the input file the mode needs to be 'r', and for the output file the mode needs to be 'w'.
An example of what your code might look like can be found in the lecture material for this week.


Step 5: Setting up the LOOP




Since our code in it's current format is designed for only one set of input values (remember in previous labs we were using an EXECUTE command and then passing data to the procedure) and we now want to process multiple records of data we need to make a change to the overall structure of the code. We need to put all of the processing in the body of the procedure after the files are opened into a basic LOOP using the LOOP/END LOOP commands. Also, we will need a new BEGIN section inside this LOOP that all of the existing code will go into. The basic structure of body of your code should look like the following when you complete this step.
BEGIN
open files
LOOP
BEGIN
file processing
BEGIN
existing process to increment rental_id
EXCEPTION
END
EXCEPTION
END
END LOOP
END



Step 6: Setting up the file read and process




Now we need to get out data record so that we can process the data brought into the program. To do this we need to read a record using the GET_LINE program in UTL_FILE. This involves using the UTL_FILE.GET_LINE process while passing the file handle variable and input record variable to the GET_LINE program.
Once the record is in the input variable we then need to parse out the individual pieces of data (movie id, customer id, and payment method) from the record using the SUBSTR function. Remember that the parameters for the SUBSTR function are the record variable name, the value for the first byte of data we want to pull, and the length of the data. For example, to get the movie id from our record the code might look like the following.
p_movie_id := SUBSTR(v_rental_record, 1, 2);
This would pull two bytes of data from the data record and put them in the variable p_movie_id. Now we can use the variable in our code that follows to see if that movie id exists in the mm_rental table. You will need to repeat the process above for the member id and the payment method. Do all three together between the line of code that reads the file and the first SELECT statement.


Step 7: Setting up the output process




If you have used the same names for your three data variables that you used for the original parameter names in the previous lab then you should not have to make any changes at all to any of the SELECT statements or the INSERT statement in the main body of code. Now we need to set up the processing that will create the output data that will go into our output validation record. To do this you will be using the PUT_LINE program within UTL_FILE.
There are going to be six different places you will want to write out a record. The first will be after the insert statement when a new rental record is added to the mm_rental table. To create this output line you can concatenate variables and character strings together to create the data record. For example, to create an output line that would read "Rental record 13 for member 10 has been added" after the new record has been inserted you would use code similar to the following (keep in mind that your variable names might be different).
v_report_record := 'Rental record '||v_rental_id||' for member '||p_member_id||
' has been added';
UTL_FILE.PUT_LINE(v_report_
filehandle, v_report_record);

This same type of process and format will need to be repeated for each exception handler that in the previous lab used the DBMS_OUTPUT.PUT_LINE package and procedure. In these cases your output line is already formatted and set, you just need to replace the DBMS_OUTPUT.PUT_LINE with the initialization of your output record and then add the UTL_FILE.PUT_LINE code.


Step 8: Getting out of the LOOP and closing the output file




There is one final step that has to be taken care of before you can start testing your code. Since we are reading a record file within a LOOP we need to be able to EXIT out of the loop after the last record has been processed. To do this you will need to add a NO_DATA_FOUND exception to your main exception handling section. This exception handle must be added before the WHEN OTHERS exception handle (remember, that on has to be last). This exception handle will have three pieces to process.
The first will be some form of message stating that all the records have been processed and this is the end of the report, i.e., ALL RECORDS PROCESSED - END OF REPORT. The second piece will be a line that will close the output file using UTL_FILE.FCLOSE. The only parameter you will need to pass is the name of the output file variable. This must be done or your output file will not have any data in it. The third thing will be the word EXIT which will tell the program to exit out of the loop.
You are now ready to compile your package specifications (must be done first) and then the package body. Debug any errors you might have and then run your test.


Step 9: Testing your new procedure




For this lab you only need to test the MOVIE_RENT_SP procedure of the package. To do this, enter an EXECUTE command for the package.procedure and pass the name of your Directory Object, input file name, and output file name to the procedure. IMPORTANT: The Directory Object name MUST BE IN UPPER CASE! This is the way it is stored in the data dictionary in Oracle and if it is not in upper case an error will be generated. Your call to the new procedure should look similar to the following.
execute MM_RENTALS_PKG.movie_rent_sp('DBM405_SMITH_DIR','movierentaldata.txt','rentalreport.txt');
The output in your output file should look similar to the following (the wording may be different but the processes recorded should be the same).
There is no movie with id 13. Cannot proceed with rental.
There is no member with id 20. Cannot proceed with rental.
There is no payment method with id 7. Cannot proceed with rental.
Rental record 13 for member 10 has been added.
Movie id 5 is not available at this time. Cannot proceed with rental.

This concludes the Lab for Week 6.

Exercise Oracle Trigger and Package


Scenario/Summary

This week we are going to continue to expand the functionality of our database schema by adding a couple of triggers to that will help us automate some of the processing we already have in place. Triggers can be used to automate repetitive tasks within the database, such as adjusting inventory levels based on other actions taken in the database. Once you have created and tested your triggers you will need to make some adjustments to the code in the package that was created in lab 4
For the lab you will need to create a script file containing the PL/SQL code that will address the lab steps below. Run the script file in your SQL*Plus session using the SET ECHO ON session command at the beginning to capture both the PL/SQL block code and output from Oracle after the block of code has executed. You will be running tests to verify that your triggers are working once your package has been updated. Spool your output and name your files with your last name plus lab 5 and give the file a text (txt) extension. For example, if you last name was Johnson then the file would be named johnson_lab5.txt. Submit both the spooled output files AND the script file for grading of the lab.


L A B S T E P

Step 1: Creating the first trigger


The first trigger you are going to create is to be named RENTING_MOVIE and is going to take care of the process of updating the mm_movie table to reflect a change downward in the quantity column for a movie when it is rented. Keep the following in mind:
  1. The trigger needs to be a AFTER INSERT trigger on the mm_rental table. We want it to be an AFTER trigger so that in case there are any exceptions raised the trigger will not fire.
  2. The trigger needs to be able to fire for each row that is inserted into the table.
  3. The trigger process will only involve the update statement to lessen the quantity amount in the mm_movie table by one for the referenced movie id.
Test your code by running the script in SQL*Plus. If you have any errors then debug them and once you have a clean compile then move on to step 2.


Step 2: Creating the second trigger




The second trigger you are going to create is to be named RETURNNG_MOVIE and is going to take care of the process of updating the mm_movie table to reflect a change upward in the quantity column for a movie when it is returned. Keep the following in mind:
  1. The trigger needs to be a AFTER UPDATE trigger on the mm_rental table based on the updating of the check in date in the mm_rental table.
  2. The trigger needs to be able t fire for each row that is updated.
  3. The trigger process will only involve the update statement to increase the quantity amount in the mm_movie table by one for referenced movie id.
Test your code by running the script in SQL*Plus. If you have any errors then debug them and once you have a clean compile then move on to step 2.


Step 3: Modifying the package code




Now we have two triggers that will handle changes in our movie rental stock each time a movie is rented or returned. Since that same process currently exists in the procedures in our package then we need to make some changes.
To keep from having repetitive processes, and thus have a scenario for generating invalid inventory data we need to take the processes out of the procedures in the package body by:
  1. Remove the update statement in the MOVIE_RENT_SP that decreases the quantity by one in the mm_movie table.
  2. Remove the update statement in the MOVIE_RETURN_SP that increases the quantity by one in the mm_movie table.
Recompile the package body (you do not have to recompile the package specifications). If you have any errors then debug them and once you have a clean compile then move on to step 4.




Step 4: Testing




To test your changes you will only need to test a valid movie rental and a valid movie return. The following steps will help you with the process.


  1. Query the mm_movie table to see all data for movie id 1.




  2. Execute the movie_rent_sp procedure in the package and use 1, 13, 2 for the parameters.




  3. Query the mm_movie table to verify the change in quantity for movie id 1.




  4. Query the mm_rental table to get the current rental id for movie id 1.




  5. Execute the movie_return_sp procedure in the package using the rental id from step 4.




  6. Query the mm_movie table to verify the change in quantity for movie id 1.


Exercise Oracle package and package body


To practice the exercise you need the schema. You can found the schema from the post http://arjudba.blogspot.com/2009/12/basic-oracle-sql-exercise.html and before practice these exercises you must first run those sqls so that you can get tables and data to practice. After you know the answer of each step please post your PL/SQL inside comment section so that other can check and understand it and you will be more clear about it.


Scenario/Summary
This week we are going to take the three program units that were created in lab 3 and combine them into a single functioning unit called a package. Packages allow use to group procedures and functions that deal with a common process together.
Back to topFor the lab you will need to create a script file containing the PL/SQL code that will address the lab steps below. Run the script file in your SQL*Plus session using the SET ECHO ON session command at the beginning to capture both the PL/SQL block code and output from Oracle after the block of code has executed. You will be running tests identical to those run in lab 3 once your package has been created. Spool your output and name your files with your last name plus lab 4 and give the file a text (txt) extension. For example, if you last name was Johnson then the file would be named johnson_lab4.txt. Submit both the spooled output files AND the script file for grading of the lab.

L A B S T E P

Step 1: Creating the Package Specifications
Back to top
Before you begin there are several things you will want to do to get ready for the lab.
  1. Refresh your database tables by running the movierental.sql script. This will restore all of the data back to where it was in the beginning for the course.
  2. Drop the two procedures and the function created in lab 3. BE sure that you have your script file from lab 3 so you can copy the procedure and function code from it.
Now you are ready to create you package specification. Your package name should be MM_RENTALS_PKG and it will contain the two procedures and the one function that were created in lab 3. Remember that for the specification you only need to list the procedure and function header data (CREATE statement with parameters).
Test your package specification by running the script in SQL*Plus. If you have any errors then debug them and once you have a clean compile then move on to step 2.
Back to top
Step 2: Creating the Package Body




Creating the package body should be simple since you already have the code for the two procedures and the function, and you know it works. Remember that the name for the package body must match the name of the specifications, and that the procedure and function header in the body must match that of the specification exactly.
Once you have created the body then run the script in your SQL*Plus session. Once you have a clean compile then move on to step three to do your testing.


Step 3: Testing the Package





To test your package you will need to run the same exact tests you did in lab 3. The following outlines what you will test for:
Testing the first procedure -
  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.
Testing the second procedure -
  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.
Testing the function -
  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.
IMPORTANT: Remember that all of your testing needs to be saved in a spool session so that it can be submitted to the Drop Box for grading.


Step 4: Determining Dependencies



Having created a package that contains program units to support the movie rental process is a major step in customizing the new database. As application modifications are made in the future however we need to be able to identify all object dependencies to test changes. For this step in the lab you are to use either data dictionary views or the dependency tree utility found in Doc Sharing (utldtree.sql file) to compile a list of dependencies for all the More Movies database objects. Remember that an object is anything that was created using the CREATE statement. Present your finding in a separate word document in a tabular format as in the following sample. Each dependency type should be listed as either direct or indirect.
NOTE: If using the utldtree.sql utility for this step then be sure to read the instructions in the comment area of the file. In executing the DEPTREE_FILL procedure that will be created by the script you will need to supply your schema name (user id) for the middle parameter of the parameter list in the execute command when your call the procedure.




Object Name
Dependent Object
Dependency Type