доступ к операции из внешнего Java-приложения
На страницу Пред. 1, 2
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nevask Участник
Вступление в Клуб: 05.12.2012
|
Пт Авг 26, 2016 14:43   |
|
Полезность: 2
|
Подниму тему, может кому пригодится. Возникла необходимость запуска операций из внешнего приложения и возможные варианты решения:
1. Можно назначить гранд на выполнение процедуры/функции в пакете и все будет работать
2. Если надо выполнить операцию без грандов - только через встроенную систему доступа, то
а) выполнить можно только операции доступные пользователю, библиотечные и др., невидимые пользователю через навигатор, выполнить не получится.
б) Запуск операции выполняется через методы интерфейсного пакета операции
в) если надо выполнить библиотечную функцию, то для нее придется писать оболочку в виде групповой операции.
Как выполнить операцию из внешней системы, Пример запуска групповой операции с 6-ю входными параметрами и возвратом целого значения :
declare
i number;
exe_ varchar2(128);
get_ varchar2(128);
res_ varchar2(128);
esc varchar2(1) := chr(27);
begin
-- Включаем систему доступа
i := ibs.executor.lock_open();
-- Устанавливаем входные параметры. Разделяются ESC символом и Индексом параметра внутри CHR(). Пользовательские параметры начинаются с индекса 11
ibs.Z$U$2576856611.S(esc||chr(11)||'Иванов'
||esc||chr(12)||'Иван'
||esc||chr(13)||'Иванович'
||esc||chr(14)||'11.11.2011'
||esc||chr(15)||'88 88'
||esc||chr(16)||'444444');
--Выполняем тело операции. EXE = 0 - валидатор, EXE = 1 - тело. GET_ = какой-то выходной параметр(назначение неясно)
exe_ := '1'; --execute
ibs.Z$U$2576856611.P(exe_,get_);
-- Если операция возвращает параметр, то можем его получить через Q с параметром '%PARAM%.<RESULT>'
res_ := ibs.Z$U$2576856611.Q('%PARAM%.<RESULT>');
--Можем посмотреть входные и выходные параметры:
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_NAME='||ibs.Z$U$2576856611.Q('%PARAM%.P_NAME'));
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_FAMILYNAME='||ibs.Z$U$2576856611.Q('%PARAM%.P_FAMILYNAME'));
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_FATHERSNAME='||ibs.Z$U$2576856611.Q('%PARAM%.P_FATHERSNAME'));
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_DATEBIRTH='||ibs.Z$U$2576856611.Q('%PARAM%.P_DATEBIRTH'));
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_SER='||ibs.Z$U$2576856611.Q('%PARAM%.P_SER'));
SYS.DBMS_OUTPUT.PUT_LINE('%PARAM%.P_NUM='||ibs.Z$U$2576856611.Q('%PARAM%.P_NUM'));
SYS.DBMS_OUTPUT.PUT_LINE('Res='||res_);
end; |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Пт Сен 02, 2016 12:40   |
|
Полезность: Нет оценки
|
Надо взять пустую операцию типа отчет и прописать зависимость на библиотеку в ней.
Потом дать права на эту библиотеку пользователю тогда система даст права на эту библиотеку на прямую пользователю. Именно так получает доступ например oracle report services.
И это вполне себе переносимо и в духе платформы. |
|
 |
OlegFB Участник - экстремал
Вступление в Клуб: 11.07.2007
|
Чт Янв 19, 2017 12:36   |
|
Полезность: Нет оценки
|
vtar пишет: | надо взять портвейн и договориться с админом Oracle чтобы выдал права на пакет тому юзеру под кем выполняется PL/SQL Dev.. Я на вашем скриншоте пакет Z$TEST не наблюдаю. |
Для всех внешних обращений пользователей к объектам схемы, отличным от владельца схемы (IBS) нужно явно раздать права на оракле ( GRANT ) на каждый объект.
Так ЦФТ делает для всех своих шлюзов. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|