Acidmind
@Acidmind

DB2. Маппинг функции на федеративной базе?

Подскажите, пожалуйста, что я делаю не так.
Пытаюсь вызвать функцию из федиративной базы.
Связь с базой наладил, никнейм для пользователя создал.
Федеративная база - FDB
Рабочая база - RDB

На базе FDB создал функцию:
CREATE FUNCTION DB2ADMIN.TEST1 (A BIGINT)
RETURNS BIGINT
DETERMINISTIC
NO EXTERNAL ACTION
RETURN select A from SYSIBM.SYSDUMMY1;


Вызываю
VALUES(DB2ADMIN.TEST1(3));
выводит 3.

На RDB создаю шаблон функции с таким же именем
CREATE FUNCTION DB2ADMIN.TEST1 (A BIGINT)
RETURNS BIGINT
AS TEMPLATE
DETERMINISTIC
NO EXTERNAL ACTION;


После этого создаю маппинг
CREATE FUNCTION MAPPING TEST1_M
FOR DB2ADMIN.TEST1(BIGINT)
SERVER FDB;


Всё ок. Вроде как должно работать. Но пытаясь вызвать функцию на RDB получаю ошибку:
VALUES(DB2ADMIN.TEST1(7));

SQL0142N  The SQL statement is not supported.
  • Вопрос задан
  • 2471 просмотр
Решения вопроса 1
Acidmind
@Acidmind Автор вопроса
Разобрался с этим. Нужно создать никнейм на таблицу SYSIBM.SYSDUMMY1.
CREATE NICKNAME DB2ADMIN.SYSDUMMY1 FOR FDB.SYSIBM.SYSDUMMY1;

И вызывать функцию следующим образом:
SELECT DB2ADMIN.TEST1(35) FROM DB2ADMIN.SYSDUMMY1;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы