Определение привилегий на хранимую процедуру
Функция
Определение оператора задания привилегии на выполнение хранимой процедуры.
Спецификация
::=
TO {PUBLIC | {имя пользователя | имя роли}[, …]}
::=
Общие правила
-
Опция
PUBLIC
предоставляет доступ к процедуре всем пользователям БД. -
Опции
< имя пользователя >
и< имя роли >
предоставляют доступ к процедуре соответственно указанному пользователю БД и пользователям, которым назначена роль. -
Давать права на выполнение хранимой процедуры может только ее владелец.
-
Привилегия
EXECUTE
дает право на выполнение процедуры от своего имени (т.е. выполнять от своего имени все содержащиеся в ней SQL-запросы, как это делает предложениеEXECUTE < имя хранимой процедуры >
). -
Привилегия
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;