Режим выполнения хранимых процедур (SET SESSION PROCEDURE AS DEFINER)
Функция
Задает режим выполнения хранимых процедур.
Спецификация
<режим выполнения процедур>
::=<от имени владельца>
::=DEFINER
<от имени текущего пользователя>
::=CURRENT_USER
Общие правила
-
Команда действует только на канал, по которому она подана.
-
Опция
<от имени владельца>устанавливает режим выполнения всех внутренних SQL-запросов процедуры, созданной без опцииAUTHID DEFINER, от имени пользователя-владельца процедуры. -
Опция
<от имени текущего пользователя>устанавливает режим выполнения всех внутренних SQL-запросов процедуры, созданной без опцииAUTHID CURRENT_USER, от имени текущего пользователя соединения.
Пример
username SYSTEM/MANAGER8 drop user USER1 cascade; create user "USER1" identified by '12345678'; grant DBA to USER1; create or replace table TEST(i int, ch char(66)); insert into test values (1,'test record'); set session procedure execute by default as definer; create or replace procedure TEST_PROC(IN id INTEGER) result integer declare var i int;// code execute "select count(*) from test;" into i;// return i; // end; grant execute AS OWNER on SYSTEM.TEST_PROC to USER1; username USER1/12345678 execute SYSTEM.TEST_PROC(); Return value = 1