第三章 事务作用域 Oracle 调用者和定义者权限
Oracle 调用者和定义者权限一、第一种情况,PL/sql程序的所有者或定义者保留程序执行的全部权限。可以通过在命名程序头部分中使用 AUTHID DEFINER 关键字来实现任何用户接收到运行以这种方式编译的程序的权限后,将会以程序所有者的身份运行该程序。--发出定义者权限create as replace function hr.quarterly_salesAUTHID DEFINERasBegin end;第二种情况在程序头部分中使用 AUTHID CURRENT_USER 关键字改关键子将指示Oracle使用调用者的权限来执行程序。保存点、提交和事务回滚DECLARE cursor c_nums is select * from tb_sql;BEGIN savepoint assign_nums; for r_num in c_nums loop update tb_sql set num5=num5+10000 where id=r_num.id; end loop; Exception when others then rollback to assign_nums;END;锁定select for updateset transaction read onlyset transaction isolation level serializablelock tabledeclare lv_num1 number; CURSOR c_nums is select * from tb_sql for update;begin update tb_sql set num4=num4+40000;end; Oracle 调用者和定义者权限一、第一种情况,PL/sql程序的所有者或定义者保留程序执行的全部权限。可以通过在命名程序头部分中使用 AUTHID DEFINER 关键字来实现任何用户接收到运行以这种方式编译的程序的权限后,将会以程序所有者的身份运行该程序。--发出定义者权限create as replace function hr.quarterly_salesAUTHID DEFINERasBegin end;第二种情况在程序头部分中使用 AUTHID CURRENT_USER 关键字改关键子将指示Oracle使用调用者的权限来执行程序。--发出调用者权限create as replace function hr.quarterly_salesAUTHID CURRENT_USERasBegin end;
--发出调用者权限create as replace function hr.quarterly_salesAUTHID CURRENT_USERasBegin end;