CftClub.ru
Клуб специалистов ЦФТ-Банк

доступ к операции из внешнего Java-приложения
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 ) на каждый объект.
Так ЦФТ делает для всех своих шлюзов.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru