Определение привилегий на хранимую процедуру

Функция

Определение оператора задания привилегии на выполнение хранимой процедуры.

Спецификация

   
< определение привилегий на хранимую процедуру >::=
< привилегия >::=
{EXECUTE | EXECUTE AS OWNER}

Общие правила

  1. Опция PUBLIC предоставляет доступ к процедуре всем пользователям БД.

  2. Опции < имя пользователя > и < имя роли > предоставляют доступ к процедуре соответственно указанному пользователю БД и пользователям, которым назначена роль.

  3. Давать права на выполнение хранимой процедуры может только ее владелец.

  4. Привилегия EXECUTE дает право на выполнение процедуры от своего имени (т.е. выполнять от своего имени все содержащиеся в ней SQL-запросы, как это делает предложение EXECUTE < имя хранимой процедуры >).

  5. Привилегия EXECUTE AS OWNER дает право выполнять процедуру от имени ее владельца (т.е. все содержащиеся в процедуре SQL-запросы будут выполняться от имени владельца процедуры).

Пример

username SYSTEM/MANAGER8
create or replace table AAA(i int);
create or replace procedure AAA_proc(in i int) result int
code
  print("Name of user: " + username()); //
  execute direct "insert into AAA(i) values (" + itoa(i) + ");"; //
  return i; //
end;
drop user "TEST" cascade;
create user "TEST" identified by '12345678';
grant execute as owner on SYSTEM.AAA_proc to "TEST";
grant select on AAA to "TEST";
username TEST/12345678
execute SYSTEM.AAA_proc(100) as owner;
select * from SYSTEM.AAA;