183. The HR user creates a stand-alone procedure as follows and grants the EXECUTE privilege on the procedure to many database users:
CREATE OR REPLACE PROCEDURE create_dept ( v_deptno NUMBER, v_dname VARCHAR2, v_mgr NUMBER, v_loc NUMBER)
BEGIN
INSERT INTO hr.departments VALUES (v_deptno, v_dname, v_mgr, v_loc);
END;
The users having permission to execute the procedure are able to insert records into the DEPARTMENTS
table even though they do not have the INSERT privilege on the table. You want only those users who
have privileges on the DEPARTMENTS table to be able to execute the procedure successfully.
What would you suggest to the PL/SQL developers to achieve this?
A.Create the procedure with definer's right.
B.Create the procedure with invoker's right.
C.Grant the EXECUTE privilege with GRANT OPTION on the procedure to selected users.
D.Create the procedure as part of a PL/SQL package and grant the EXECUTE privilege on the package
to selected users.
Answer: B
答案解析:
参考:http://blog.csdn.net/rlhua/article/details/12652569
用户有执行procedure 的权限以至于能够把记录插入到DEPARTMENTS,即使这些用户没有插入DEPARTMENTS表的权限。
你只想只有能够插入DEPARTMENTS表的数据的那些用户执行procedure 成功。
有什么建议来实现?

本文探讨了一种场景,在此场景中,尽管用户没有直接获得表的INSERT权限,但他们可以通过执行特定的PL/SQL过程来间接地插入数据。为了确保只有拥有表权限的用户才能执行该过程,文章建议采用调用者的权利(Invoker's Rights)来创建过程。

356

被折叠的 条评论
为什么被折叠?



