Есть ли способ вызвать / выполнить функцию 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)
Не совсем красиво, но это помогает.