Test: Final Exam Semester 1 
 
 

Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.

 Section 6 
      
  1.  Examine the following code which shows three levels of nested block. What is the scope of the variable v_middle_var? 
DECLARE -- outer block 
    v_outer_var NUMBER; 
BEGIN 
    DECLARE -- middle block 
       v_middle_var NUMBER; 
    BEGIN 
       DECLARE -- inner block 
          v_inner_var NUMBER; 
       BEGIN 
          ... 
       END; 
    END; 
END; 

 Mark for Review 
(1) Points 
      
    All three blocks 
  
    Middle and outer blocks only 
  
    Middle and inner blocks only (*) 
  
    Middle block only 
  
    None of the above 
  
      
      Correct  
  
      
  2.  What will happen when the following code is executed? 
DECLARE 
    e_excep1 EXCEPTION; 
    e_excep2 EXCEPTION; 
BEGIN 
    RAISE e_excep1; 
EXCEPTION 
    WHEN e_excep1 THEN BEGIN 
       RAISE e_excep2; END; 
END; 

 Mark for Review 
(1) Points 
      
    It will fail to compile because you cannot have a subblock inside an exception section. 
  
    It will fail to compile because e_excep1 is out of scope in the subblock. 
  
    It will fail to compile because you cannot declare more than one exception in the same block. 
  
    It will compile successfully and return an unhandled e_excep2 to the calling environment. (*) 
  
      
      Correct  
  
      
  3.  The following code does not violate any constraints and will not raise an ORA-02292 error. What will happen when the code is executed? 
BEGIN 
    DECLARE 
       e_constraint_violation EXCEPTION; 
       PRAGMA EXCEPTION_INIT(e_constraint_violation, -2292); 
    BEGIN 
       DBMS_OUTPUT.PUT_LINE('Inner block message'); 
    END; 
EXCEPTION 
    WHEN e_constraint_violation THEN 
       DBMS_OUTPUT.PUT_LINE('Outer block message'); 
END; 

 Mark for Review 
(1) Points 
      
    Inner block message' will be displayed. 
  
    The code will fail because the exception is declared in the inner block but is referenced in the outer block. (*) 
  
    Outer block message' will be displayed. 
  
    The code will fail because line 4 should read: PRAGMA EXCEPTION_INIT(-2292, e_constraint_violation); 
  
      
      Incorrect. Refer to Section 6.  
  
      
  4.  The following code will execute correctly. True or False? 
DECLARE 
    v_myvar1 NUMBER; 
BEGIN 
    DECLARE 
       v_myvar2 NUMBER; 
    BEGIN 
       v_myvar1 := 100; 
    END; 
    v_myvar2 := 100; v END; 

 Mark for Review 
(1) Points 
      
    True 
  
    False (*) 
  
      
      Correct  
  
      
  5.  There are no employees in department 75. What will be displayed when this code is executed? 
DECLARE 
    v_last_name employees.last_name%TYPE; 
BEGIN 
    DBMS_OUTPUT.PUT_LINE('A'); 
    BEGIN 
       SELECT last_name INTO v_last_name 
          FROM employees WHERE department_id = 75; 
       DBMS_OUTPUT.PUT_LINE('B'); 
    END; 
    DBMS_OUTPUT.PUT_LINE('C'); 
EXCEPTION 
    WHEN OTHERS THEN 
       DBMS_OUTPUT.PUT_LINE('D'); 
END; 

 Mark for Review 
(1) Points 
      
    A 
C
D
 
  
    A 
D 
(*)
 
  
    A 
 
  
    A 
B 
D 
 
  
    None of the above 
 
  
      
      Correct  
  
      
  6.  What will be displayed when the following code is executed? 
<<outer>> 
DECLARE 
    v_myvar NUMBER; 
BEGIN 
    v_myvar := 10; 
    DECLARE 
       v_myvar NUMBER := 200; 
    BEGIN 
       outer.v_myvar := 20; 
       v_myvar := v_myvar / 0; -- this raises a ZERO_DIVIDE error 
       outer.v_myvar := 30; 
    END; 
    v_myvar := 40; 
EXCEPTION 
    WHEN ZERO_DIVIDE THEN 
       DBMS_OUTPUT.PUT_LINE(v_myvar); 
END; 

 Mark for Review 
(1) Points 
      
    10 
  
    20 (*) 
  
    30 
  
    40 
  
    200 
  
      
      Correct  
  
      
  7.  There are no employees in department_id 99. What output will be displayed when the following code is executed? 
DECLARE 
    v_count NUMBER; 
BEGIN 
    SELECT COUNT(*) INTO v_count 
       FROM employees WHERE department_id = 99; 
    IF v_count = 0 THEN 
       RAISE NO_DATA_FOUND; 
       DBMS_OUTPUT.PUT_LINE('No employees found'); 
    END IF; 
EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
       DBMS_OUTPUT.PUT_LINE('Department 99 is empty'); 
END; 

 Mark for Review 
(1) Points 
      
    No employees found 
  
    No employees found Department 99 is empty 
  
    Department 99 is empty (*) 
  
    The block will fail because you cannot explicitly RAISE a predefined Oracle Server error such as NO_DATA_FOUND 
  
      
      Correct  
  
      
  8.  A user-defined exception is raised by using:  Mark for Review 
(1) Points 
      
    FLAG exception_name; 
  
    RAISE exception-name; (*) 
  
    PRAGMA EXCEPTION_INIT 
  
    RAISE(error_number, exception_name); 
  
      
      Correct  
  
      
  9.  A user-defined exception must be declared as a variable of data type EXCEPTION. True or False?  Mark for Review 
(1) Points 
      
    True (*) 
  
    False 
  
      
      Correct  
  
      
  10.  A user-defined exception can be raised: 
A. In the declaration section 
B. In the executable section 
C. In the exception section 
 Mark for Review 
(1) Points 
      
    B 
  
    C 
  
    A and B 
  
    B and C (*) 
  
    A and C 
  
      
      Incorrect. Refer to Section 6 
 
 11.  Which of the following is NOT an advantage of including an exception handler in a PL/SQL block?  Mark for Review 
(1) Points 
      
    Protects the database from errors 
  
    Code is more readable because error-handling routines can be written in the same block in which the error occurred 
  
    Prevents errors from occurring (*) 
  
    Avoids costly and time-consuming correction of mistakes 
  
      
      Correct  
  
      
  12.  While a PL/SQL block is executing, more than one exception can occur at the same time. True or False?  Mark for Review 
(1) Points 
      
    True 
  
    False (*) 
  
      
      Correct  
  
      
  13.  Which of the following are good practice guidelines for exception handling? (Choose three.)  Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    Test your code with different combinations of data to see what potential errors can happen. (*) 
  
    Use an exception handler whenever there is any possibility of an error occurring. (*) 
  
    Include a WHEN OTHERS handler as the first handler in the exception section. 
  
    Allow exceptions to propagate back to the calling environment. 
  
    Handle specific named exceptions where possible, instead of relying on WHEN OTHERS. (*) 
  
      
      Correct  
  
      
  14.  Which of the following best describes a PL/SQL exception?  Mark for Review 
(1) Points 
      
    A user enters an invalid password while trying to log on to the database. 
  
    An error occurs during execution which disrupts the normal operation of the program. (*) 
  
    A DML statement does not modify any rows. 
  
    The programmer makes a spelling mistake while writiing the PL/SQL code. 
  
      
      Correct  
  
      
  15.  Which of the following best describes a predefined Oracle Server error?  Mark for Review 
(1) Points 
      
    Has a standard Oracle error number but must be named by the PL/SQL programmer 
  
    Is not raised automatically but must be declared and raised explicitly by the PL/SQL programmer 
  
    Has a standard Oracle error number and a standard name which can be referenced in the EXCEPTION section (*) 
  
    Is associated with an Oracle error number using PRAGMA EXCEPTION_INIT 
  
      
      Correct  
  
      
  16.  Which of the following are examples of predefined Oracle Server errors? (Choose three.)  Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    TOO_MANY_ROWS (*) 
  
    NO_DATA_FOUND (*) 
  
    OTHERS 
  
    ZERO_DIVIDE (*) 
  
    E_INSERT_EXCEP 
  
      
      Correct  
  
      
  17.  Examine the followiing code. Which exception handlers would successfully trap the exception which will be raised when this code is executed? (Choose two.) 
DECLARE 
    CURSOR emp_curs IS SELECT * FROM employees; 
    v_emp_rec emp_curs%ROWTYPE; 
BEGIN 
    FETCH emp_curs INTO v_emp_rec; 
    OPEN emp_curs; 
    CLOSE emp_curs; 
EXCEPTION ... 
END; 

 Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    WHEN CURSOR_NOT_OPEN 
  
    WHEN INVALID_CURSOR (*) 
  
    WHEN OTHERS (*) 
  
    WHEN NO_DATA_FOUND 
  
    WHEN INVALID_FETCH 
  
      
      Incorrect. Refer to Section 6.  
  
      
  18.  Which of these exceptions would need to be raised explicitly by the PL/SQL programmer?  Mark for Review 
(1) Points 
      
    OTHERS 
  
    A SELECT statement returns more than one row. 
  
    A check constraint is violated. 
  
    A SQL UPDATE statement does not update any rows. (*) 
  
    A row is FETCHed from a cursor while the cursor is closed. 
  
      
      Incorrect. Refer to Section 6.  
  
      
  19.  Which of the following best describes a user-defined exception?  Mark for Review 
(1) Points 
      
    A predefined Oracle Server error such as NO_DATA_FOUND 
  
    A non-predefined Oracle Server error such as ORA-01400 
  
    An error which is not automatically raised by the Oracle server (*) 
  
    Any error which has an Oracle error number of the form ORA-nnnnn 
  
      
      Correct  
  
      
  20.  How can you retrieve the error code and error message of any Oracle Server exception?  Mark for Review 
(1) Points 
      
    By using the functions SQLCODE and SQLERRM (*) 
  
    By using the functions SQLCODE and SQLERR 
  
    By using RAISE_APPLICATION_ERROR 
  
    By defining an EXCEPTION variable and using PRAGMA EXCEPTION_INIT 
  
      
      Correct  
 
 21.  The following procedure has been created: 
CREATE OR REPLACE PROCEDURE defproc 
(A IN NUMBER := 50, 
B IN NUMBER, 
C IN NUMBER DEFAULT 40) 
IS ..... 
Which one of the following will invoke the procedure correctly? 
 Mark for Review 
(1) Points 
      
    defproc(30 => A); 
  
    defproc(30, 60 => C); 
  
    defproc(40, 70); (*) 
  
    defproc(10 => A, 25 => C); 
  
    defproc; 
  
      
      Correct  
  
      
  22.  Procedure SOMEPROC has five parameters named A, B, C, D, E in that order. The procedure was called as follows: 
SOMEPROC(10,20,D=>50); 

How was parameter D referenced? 
 Mark for Review 
(1) Points 
      
    Positionally 
  
    Named (*) 
  
    A combination of positionally and named 
  
    A combination of named and defaulted 
  
    Defaulted 
  
      
      Correct  
  
      
  23.  Suppose you set up a parameter with an explicit OUT mode. What is true about that parameter?  Mark for Review 
(1) Points 
      
    It must have a DEFAULT value. 
  
    It cannot have a DEFAULT value. (*) 
  
    It acts like a constant (its value cannot be changed inside the subprogram). 
  
    It must be the same type as the matching IN parameter. 
  
    It inherits its type from the matching IN parameter. 
  
      
      Correct  
  
      
  24.  Procedure SOMEPROC has five parameters named A, B, C, D, E in that order. The procedure was called as follows:
SOMEPROC(10,20,D=>50); 

How was parameter B referenced? 
 Mark for Review 
(1) Points 
      
    Positional (*) 
  
    Named 
  
    A combination of positionally and named 
  
    A combination of named and defaulted 
  
    Defaulted 
  
      
      Correct  
  
      
  25.  Examine the following procedure: 
CREATE OR REPLACE PROCEDURE smallproc 
(p_param IN NUMBER) 
IS 
BEGIN .... 
The procedure is invoked by: 
DECLARE 
v_param NUMBER := 20; 
BEGIN 
smallproc(v_param); 
END; 
Which of the following statements is true?  Mark for Review 
(1) Points 
      
    p_param is a parameter and v_param is an argument 
  
    p_param is a formal parameter and 20 is an actual parameter 
  
    p_param is a formal parameter and v_param is an actual parameter (*) 
  
    p_param and v_param are both formal parameters, while 20 is an actual parameter 
  
    p_param is an actual parameter and v_param is a formal parameter 
  
      
      Correct  
  
      
  26.  Which of the following best describes how an IN parameter affects a procedure?  Mark for Review 
(1) Points 
      
    It describes the order in which the procedure's statements should be executed. 
  
    It describes which parts of the procedure's code are optional or conditional. 
  
    It makes the procedure execute faster. 
  
    It passes a value into the procedure when the procedure is invoked. (*) 
  
    It allows complex calculations to be executed inside the procedure. 
  
      
      Correct  
  
      
  27.  Which of the following can NOT be used as the datatype of a procedure parameter?  Mark for Review 
(1) Points 
      
    A non-SQL datatype such as BOOLEAN 
  
    The name of another procedure (*) 
  
    A large object datatype such as CLOB 
  
    A PLSQL record defined using %ROWTYPE 
  
      
      Incorrect. Refer to Section 7.  
  
      
  28.  You want to create a procedure named SOMEPROC which accepts a single parameter named SOMEPARM. The parameter can be up to 100 characters long. Which of the following is correct syntax to do this?  Mark for Review 
(1) Points 
      
    CREATE PROCEDURE someproc 
    (someparm varchar2) 
IS 
BEGIN ...
(*) 
  
    CREATE PROCEDURE someproc 
    (someparm varchar2(100) )
IS
BEGIN...
 
  
    CREATE PROCEDURE someproc 
IS 
    (someparm VARCHAR2) 
BEGIN... 
 
  
    CREATE PROCEDURE someproc 
    someparm varchar2(100); 
IS 
    BEGIN... 
 
  
    CREATE PROCEDURE someproc 
    (someparm 100) 
IS 
BEGIN ...
 
  
      
      Correct  
  
      
  29.  A procedure will execute faster if it has at least one parameter.  Mark for Review 
(1) Points 
      
    True 
  
    False (*) 
  
      
      Correct  
  
      
  30.  You have created the following procedure: 
CREATE OR REPLACE PROCEDURE double_it 
(p_param IN OUT NUMBER) 
IS 
BEGIN 
p_param := p_param * 2; 
END; 
Which of the following anonymous blocks invokes this procedure successfully?  Mark for Review 
(1) Points 
      
    BEGIN 
EXECUTE double_it(20); 
END; 
  
    BEGIN 
SELECT double_it(20) 
FROM DUAL; 
END; 
  
    DECLARE 
v_result NUMBER(6); 
BEGIN 
v_result := double_it(20); 
END; 
  
    DECLARE 
v_result NUMBER(6) := 20; 
BEGIN 
double_it(v_result); 
END; (*) 
  
    BEGIN 
double_it(20); 
END; 
  
      
      Correct  
 
31.  One PL./SQL subprogram can be invoked from within many applications. True or False?  Mark for Review 
(1) Points 
      
    True (*) 
  
    False 
  
      
      Correct  
  
      
  32.  Which of the following are benefits of using PL/SQL subprograms rather than anonymous blocks? (Choose three.)  Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    Easier to write 
  
    Better data security (*) 
  
    Easier code maintenance (*) 
  
    Faster performance (*) 
  
    Do not need to declare variables 
  
      
      Correct  
  
      
  33.  The following are the steps involved in creating, and later modifying and re-creating, a PL/SQL procedure in Application Express. In what sequence should these steps be performed? 

Retrieve the saved code from "Saved SQL" in SQL Commands 
Execute the code to create the procedure 
Execute the code to re-create the procedure 
Click on the "Save" button and save the procedure code 
Modify the code in the SQL Commands window 
Type the procedure code in the SQL Commands window 
 Mark for Review 
(1) Points 
      
    F,C,A,B,E,D 
  
    F,B,D,A,E,C (*) 
  
    E,D,F,C,A,B 
  
    F,B,D,E,A,C 
  
    F,B,C,D,E,A 
  
      
      Correct  
  
      
  34.  Which of the following keywords MUST be included in every PL/SQL procedure definition? (Choose three.)  Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    REPLACE 
  
    BEGIN (*) 
  
    IS or AS (*) 
  
    DECLARE 
  
    END (*) 
  
      
      Correct  
  
      
  35.  A stored PL/SQL procedure can be invoked from which of the following? 

A PL/SQL anonymous block 
Another PL/SQL procedure 
A calling application 
 Mark for Review 
(1) Points 
      
    A only 
  
    A and B 
  
    A and C 
  
    A, B and C (*) 
  
    B and C 
  
      
      Correct  
  
      
  36.  A PL/SQL stored procedure can accept one or more input parameters and can return one or more output values to the calling environment. True or False?  Mark for Review 
(1) Points 
      
    True (*) 
  
    False 
  
      
      Correct  
  
      
 
      
 Section 8 
      
  37.  The following code shows the dependencies between three procedures: 
CREATE PROCEDURE parent 
IS BEGIN 
    child1; 
    child2; 
END parent; 
You now try to execute: 

DROP PROCEDURE child2; 
What happens? 
 Mark for Review 
(1) Points 
      
    You cannot drop CHILD2 because PARENT is dependent on it. 
  
    CHILD2 is dropped successfully. PARENT and CHILD1 are both marked INVALID. 
  
    The database automatically drops PARENT as well. 
  
    CHILD2 is dropped successfully. PARENT is marked INVALID. CHILD1 is still valid. (*) 
  
    The database automatically drops CHILD1 as well. 
  
      
      Correct  
  
      
  38.  You want to see the names, modes and data types of the formal parameters of function MY_FUNC in your schema. How can you do this? (Choose two)  Mark for Review 
(1) Points 
      
   (Choose all correct answers)  
      
    Query USER_PARAMETERS 
  
    Query USER_SOURCE (*) 
  
    Query USER_FUNCTIONS 
  
    SHOW PARAMETER my_funct; 
  
    DESCRIBE my_funct; (*) 
  
      
      Correct  
  
      
  39.  Examine the following code (the code of CHILD2 is not shown): 
CREATE PROCEDURE child1 
IS v_salary employees.salary%TYPE; 
BEGIN 
SELECT salary INTO v_salary FROM employees 
WHERE employee_id = 9999; 
EXCEPTION 
WHEN NO_DATA_FOUND THEN NULL; 
END child1; 
CREATE PROCEDURE parent 

IS BEGIN 
child1; 
child2; 
EXCEPTION 
WHEN NO_DATA_FOUND THEN NULL; 
END parent; 
Employee_id 9999 does not exist. What happens when PARENT is executed? 
 Mark for Review 
(1) Points 
      
    CHILD1 handles the exception successfully and ends. PARENT continues to execute and invokes CHILD2. (*) 
  
    CHILD1 ends abruptly, PARENT handles the exception successfully and ends. CHILD2 does not execute. 
  
    CHILD1 ends abruptly, then PARENT also ends abruptly with an unhandled exception. 
  
    PARENT handles the exception, then CHILD1 resumes execution. 
  
    PARENT fails to compile because you cannot have the same exception handler in two separate subprograms. 
  
      
      Correct  
  
      
  40.  Consider the following function: 
CREATE FUNCTION ADD_EM 
    (a NUMBER := 1, 
    b NUMBER := 2 ) 
    RETURN NUMBER 
IS BEGIN 
    RETURN (a+b); 
END ADD_EM; 

Which one of the following blocks will NOT work correctly? 
 Mark for Review 
(1) Points 
      
    DECLARE 
    x NUMBER; 
BEGIN 
    x:= add_em(b=4); 
END; 
(*)
 
  
    DECLARE 
    x NUMBER; 
BEGIN 
    x:= add_em(4); 
END; 
 
  
    DECLARE 
    x NUMBER; 
BEGIN 
    x:= add_em(4,5); 
END; 
 
  
    DECLARE 
    x NUMBER; 
BEGIN 
    x:= add_em; 
END; 
 
  
    None of them will work. 
 
  
      
      Correct  
 
41.  What is wrong with the following code? 
CREATE FUNCTION badfunc 
(p_param NUMBER(4)) 
RETURN BOOLEAN 
IS BEGIN 
RETURN (p_param > 10); 
END badfunc; 
 Mark for Review 
(1) Points 
      
    P_PARAM must be declared AFTER the RETURN clause. 
  
    P_PARAM must have a default value. 
  
    The datatype of the IN parameter cannot have a precision or scale. It must be NUMBER, not NUMBER(4). (*) 
  
    RETURN (p_param > 10); is wrong because you cannot return an expression. 
  
    The NUMBER datatype must have a scale as well as a precision. 
  
      
      Correct  
  
      
  42.  In a SELECT statement, where can a function NOT be used?  Mark for Review 
(1) Points 
      
    In a GROUP BY or HAVING clause. 
  
    A function can be used anywhere in a SELECT statement. (*) 
  
    In a WHERE clause. 
  
    In the column list (SELECT) clause. 
  
    In an ORDER BY clause. 
  
      
      Correct  
  
      
  43.  You try to create a function named MYFUNC. The function does not compile correctly because there are errors in your code. Which Dictionary view can you query to see the errors?  Mark for Review 
(1) Points 
      
    USER_SOURCE 
  
    USER_ERRORS (*) 
  
    USER_OBJECTS 
  
    USER_DEPENDENCIES 
  
    USER_COMPILES 
  
      
      Correct  
  
      
  44.  Which of the following best describes a stored function?  Mark for Review 
(1) Points 
      
    A subprogram that must return exactly one value. (*) 
  
    A subprogram that must have at least one IN parameter. 
  
    A subprogram that has no OUT or IN OUT parameters. 
  
    A subprogram that executes automatically when a DML statement is executed on a table. 
  
    A subprogram which invokes another subprogram. 
  
      
      Correct  
  
      
  45.  A function must have at least one IN parameter, and must return exactly one value.  Mark for Review 
(1) Points 
      
    True 
  
    False (*) 
  
      
      Correct  
  
      
  46.  Where can a function be used in a query?  Mark for Review 
(1) Points 
      
    Nowhere in a query. 
  
    Anywhere in a query. (*) 
  
    Only in the SELECT clause 
  
    Only in the WHERE clause 
  
    In the SELECT or WHERE clauses, but not in the ORDER BY clause. 
  
      
      Correct  
  
      
  47.  You have created a function named IS_LEAPYEAR that accepts one IN parameter of datatype DATE and returns a Boolean value (TRUE or FALSE) depending on whether the date is in a leap year. What is wrong with this query: 
SELECT last_name, hire_date 
FROM employees 
WHERE is_leapyear(hire_date)=TRUE; 

 Mark for Review 
(1) Points 
      
    The IS_LEAPYEAR function must be in the SELECT clause, not the WHERE clause. 
  
    You cannot use DATE and BOOLEAN datatypes in the same function. 
  
    The SELECT statement returns more than one row. 
  
    IS_LEAPYEAR is a reserved word in the SQL language. 
  
    The function returns a Boolean, and therefore cannot be used within a SELECT statement. (*) 
  
      
      Correct  
  
      
  48.  What is one of the advantages of using user-defined functions in a SQL statement?  Mark for Review 
(1) Points 
      
    They automate repetitive formulas which otherwise you would have to type in full every time you used them. (*) 
  
    They execute faster than system-defined functions such as UPPER and LOWER. 
  
    They allow you to execute DML from inside a SELECT statement. 
  
    They allow you to use functions which return a BOOLEAN. 
  
    They are stored on your local PC, not in the database. 
  
      
      Correct  
  
      
  49.  User REYHAN creates the following procedure: CREATE PROCEDURE proc1 AUTHID CURRENT_USER IS v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM tom.employees; END; User BILL wants to execute this procedure. What privileges will BILL need?  Mark for Review 
(1) Points 
      
    EXECUTE on REYHAN.PROC1 and SELECT on TOM.EMPLOYEES (*) 
  
    EXECUTE on REYHAN.PROC1 
  
    SELECT on TOM.EMPLOYEES 
  
    BILL needs no privileges 
  
    None of the above. The procedure will fail to compile because REYHAN does not have SELECT privilege on TOM.EMPLOYEES. 
  
      
      Correct  
  
      
  50.  User BOB creates procedure MYPROC using the default Definer's Rights. BOB then executes: 
    GRANT EXECUTE ON bob.myproc TO ted; 
When TED invokes BOB.MYPROC, whose privileges are checked?  Mark for Review 
(1) Points 
      
    TED's privileges 
  
    PUBLIC's privileges 
  
    SYSTEM's privileges 
  
    BOB's privileges (*) 
  
    ORACLE's privileges 
  
      
      Correct  
 
