Есть ли способ вызвать / выполнить функцию Oracle через Postgres?

У меня есть требование перенести базу данных Oracle в Postgres, в которой я могу это сделать. Используя FDW, я могу получить доступ к данным Oracle в Postgres. Теперь есть требование вызвать / выполнить функцию Oracle через Postgres.

Есть ли способ сделать это?

Я нашел эту ссылку, для того же: https://github.com/laurenz/oracle_fdw/issues/187

Может ли кто-нибудь предоставить мне образец или пример?

С Уважением,

1 ответ

Давайте использовать эту простую функцию Oracle для тестирования:

CREATE OR REPLACE FUNCTION double(n NUMBER) RETURN NUMBER AS
BEGIN
   RETURN n * 2;
END;
/

Затем таблица Oracle, которую мы можем использовать с oracle_fdw:

CREATE TABLE call_double(inp NUMBER, outp NUMBER);

INSERT INTO call_double VALUES (1, 1);

COMMIT;

Теперь мы создаем BEFORE вызвать как это:

CREATE TRIGGER double_trig BEFORE UPDATE ON call_double FOR EACH ROW
BEGIN
   :NEW.outp := double(:NEW.inp);
END;
/

Теперь мы можем создать и использовать стороннюю таблицу в PostgreSQL:

CREATE FOREIGN TABLE call_double(
   inp numeric OPTIONS (key 'true'),
   outp numeric)
SERVER oracle OPTIONS (table 'CALL_DOUBLE');

UPDATE call_double SET inp = 12 RETURNING outp;

┌──────┐
│ outp │
├──────┤
│   24 │
└──────┘
(1 row)

Не совсем красиво, но это помогает.

Другие вопросы по тегам