You have created a stored procedure DELETE_TEMP_TABLE that uses dynamic SQL to remove
a table in your schema. You have granted the EXECUTE privilege to user A on this procedure.
When user A executes the DELETE_TEMP_TABLE procedure, under whose privileges are the
operations performed by default?
A.
SYS privileges
B.
Your privileges
C.
Public privileges
D.
User A’s privileges
E.
User A cannot execute your procedure that has dynamic SQL.
Explanation:
When you create a procedure, it will be executed under the privileges of the creator, unless the
procedure has the following statement AUTHID CURRENT_USER. If you specify AUTHIDCURRENT_USER, the privileges of the current user are checked at run time, and external
references are resolved in the schema of the current user. Like this example
SQL> CREATE OR REPLACE PROCEDURE delete_temp_table(v_table varchar2)
2 AUTHID CURRENT_USER
3 IS
4 BEGIN
5 EXECUTE IMMEDIATE ‘DROP TABLE ‘||V_TABLE;
6 END;
7 /
Procedure created.
If the procedure is create in this way then the EXECUTE IMMEDIATE statement will be execute
under the privilege of the user who executes the procedure, but if we skip line 2 then the
procedure will be executed under the privilege of the owner of the procedure.
Incorrect Answers:
A: SYS privilege has nothing with is.
C: What is the public privileges? There is nothing called public privileges.
D: This will be true if the procedure contains the AUTHID CURRENT_USER.
E: There is no problem in having a dynamic SQL statement in Procedure.