我读过,“存储过程和SQL方法使用其所有者的权限执行,而不是使用当前用户 . ”
我用Oracle USER - SYSTEM(在Oracle 11g中)执行了以下步骤
步骤1)创建一个在模式PROD中创建物化视图的过程:
create procedure prod.sp_create_mview
is
begin
execute immediate 'create materialized view prod.XXX...';
end;
/
步骤2)执行它:
begin
prod.sp_create_mview;
end;
/
MVIEW是在PROD模式中创建的
问题:1 . 创建mview和create table的权限未授予用户PROD,仍然创建了MVIEW . 如果使用OWNER(即PROD)权限执行过程,该怎么办?
1 回答
默认情况下,Oracle将函数视为与其调用者具有相同的权限 .
要定义具有所有者权限的函数,您需要在定义函数时使用
AUTHID DEFINER
.所以改为