使用存储过程查询没有权限的表
用户B中有表:T_USER,用户A没有对T_USER的查询权限。如果我们还想在A中想要查询T_USER,可以通过存储过程来完成
在B创建存储过程如下:
CREATE OR REPLACE PROCEDURE PROC_SELECT_USER(v_user_id in VARCHAR2, v_user_name out VARCHAR2) AS
begin
SELECT user_name into v_user_name FROM T_USER WHERE USER_ID = v_user_id;
END;
给A用户赋权:
grant execute on B.PROC_SELECT_USER to A;
在A中测试:
declare
v_user_id varchar2(40);
v_user_name varchar2(40);
begin
-- Call the procedure
v_user_id := '00000001';
PROC_SELECT_USER(v_user_id, v_user_name);
dbms_output.put_line(v_user_name);
end;
通过上述方法可以曲线地完成对无权限的表的更新,修改等操作。