Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Вызов процедур и функций их другой БД.  [new]
Xeximus007
Member

Откуда:
Сообщений: 8
Добрый день!

Есть некоторый сервер, крутится под Linux.
На этом сервере две БД.
Как можно и можно ли вообще из одной базы обращаться к другой базе, а точнее к её функциям. Функции могут быть как скалярные так и табличные.
К таблице я вроде могу обращаться через NickName, но можно ли к функциям и СЧЁТЧИКАМ?
2 авг 17, 15:42    [20695278]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4640
Xeximus007,

Добрый день.

Только скалярные и аггрегатные.
CREATE FUNCTION (sourced or template) statement
2 авг 17, 23:26    [20696517]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Xeximus007
Member

Откуда:
Сообщений: 8
Mark Barinstein, а табличные функции как то можно? и счётчики?
3 авг 17, 09:33    [20696939]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4640
Xeximus007
а табличные функции как то можно? и счётчики?
Оберните их в базе-источнике в представления, дайте права на чтение из них пользователю, в которого мэппится федеративный.

create view mon.mon_get_tablespace as select * from table(mon_get_tablespace(null, -2));
grant select on table mon.mon_get_tablespace to user my_REMOTE_AUTHID_user;

И выполняете в федеративной базе пользователем, который мэппится в my_REMOTE_AUTHID_user:
select * from myservername.mon.mon_get_tablespace;
3 авг 17, 20:43    [20699094]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Xeximus007
Member

Откуда:
Сообщений: 8
Mark Barinstein, увы, у меня параметры задаываемые очень важны. Особенно в той функции которая отвечает за сохранение данных.
4 авг 17, 11:25    [20700083]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4640
Xeximus007,

На источнике:

--#SET TERMINATOR @
create or replace procedure mon.mon_get_tablespace (p_tbspace varchar(128), p_member int)
dynamic result sets 1
reads sql data
no external action
begin
declare c1 cursor with return for
select * from table(mon_get_tablespace(p_tbspace, p_member));
open c1;
end@

grant execute on procedure mon.mon_get_tablespace to user my_REMOTE_AUTHID_user@

В федеративной:

CREATE PROCEDURE MON.MON_GET_TABLESPACE SOURCE MON.MON_GET_TABLESPACE
NUMBER OF PARAMETERS 2
FOR SERVER myservername
READS SQL DATA
NO EXTERNAL ACTION;

call MON.MON_GET_TABLESPACE('SYSCATSPACE', -2);
4 авг 17, 12:30    [20700405]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Xeximus007
Member

Откуда:
Сообщений: 8
Mark Barinstein, Спасибо, вроде то что надо! Только можно наверное один глупый вопрос, Mon это что, схема?
4 авг 17, 14:13    [20700811]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Xeximus007
Member

Откуда:
Сообщений: 8
Mark Barinstein, а обернуть табличную табличной функцией можно?
4 авг 17, 14:43    [20700976]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур и функций их другой БД.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4640
Xeximus007
Спасибо, вроде то что надо! Только можно наверное один глупый вопрос, Mon это что, схема?
Да, это имя схемы для примера.
Можете у себя выбрать любое другое имя.
4 авг 17, 15:10    [20701100]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить