我需要将Oracle DB迁移到Postgres,我可以这样做。 通过使用FDW,我可以在Postgres访问Oracle数据。 现在需要通过Postgres调用/执行Oracle的功能。
有没有办法这样做?
我找到了这个链接,同样的: https://github.com/laurenz/oracle_fdw/issues/187
任何人都可以向我提供样品或示例吗?
此致
答案 0 :(得分:2)
让我们使用这个简单的Oracle函数进行测试:
CREATE OR REPLACE FUNCTION double(n NUMBER) RETURN NUMBER AS
BEGIN
RETURN n * 2;
END;
/
然后我们可以使用oracle_fdw的一个Oracle表:
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)
不完全漂亮,但它可以解决问题。