作者:古零零碎碎 | 来源:互联网 | 2014-07-08 01:11
Oracle调用者和定义者权限一、第一种情况,PL/sql程序的所有者或定义者保留程序执行的全部权限。可以通过在命名程序www.2cto.com头部分中使用AUTHIDDEFINER关键字来实现任何用户接收到运行以这种方...SyntaxHighlighter.all();
一、第一种情况,PL/sql程序的所有者或定义者保留程序执行的全部权限。可以通过在命名程序 www.2cto.com
头部分中使用 AUTHID DEFINER 关键字来实现
任何用户接收到运行以这种方式编译的程序的权限后,将会以程序所有者的身份运行该程序。
--发出定义者权限
create as replace function hr.quarterly_sales
AUTHID DEFINER
as
Begin
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 update
set transaction read only
set transaction isolation level serializable
lock table
declare
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_sales
AUTHID DEFINER
as
Begin
end;
第二种情况
在程序头部分中使用 AUTHID CURRENT_USER 关键字
改关键子将指示Oracle使用调用者的权限来执行程序。
--发出调用者权限
create as replace function hr.quarterly_sales
AUTHID CURRENT_USER
as
Begin
end;
--发出调用者权限create as replace function hr.quarterly_salesAUTHID CURRENT_USERasBegin end;