Возможное решение может быть следующим:
- Вы создаете пакет с опцией
AUTHID CURRENT_USER
;
- Вы предоставляете выбор, вставку и т. Д. Для объектов, которые находятся в схеме DEFINER , которую вы хотите использовать;
- Вы используете полные имена объектов DEFINER.
Вот пример:
CREATE PACKAGE pkg1 AUTHID CURRENT_USER
IS
procedure insert_current_user;
procedure insert_definer;
END pkg1;
/
CREATE OR REPLACE PACKAGE BODY pkg1
IS
procedure insert_current_user
is
begin
insert into table1 values(1);
end insert_current_user;
procedure insert_definer
is
begin
insert into DEFINER.table1 values(1);
end insert_definer;
END pkg1;
/
DEFINER является владельцем таблицы.
В качестве улучшения вы можете создать синоним для таблицы DEFINER.table1
и затем использовать синонимы в пакете.