我需要将 Oracle DB 迁移到 Postgres,我可以这样做。通过使用 FDW,我可以在 Postgres 访问 Oracle 数据。现在需要通过 Postgres 调用/执行 Oracle 的功能。
有什么办法吗?
我找到了这个链接,同样的: https ://github.com/laurenz/oracle_fdw/issues/187
任何人都可以为我提供样本或示例吗?
问候,
我需要将 Oracle DB 迁移到 Postgres,我可以这样做。通过使用 FDW,我可以在 Postgres 访问 Oracle 数据。现在需要通过 Postgres 调用/执行 Oracle 的功能。
有什么办法吗?
我找到了这个链接,同样的: https ://github.com/laurenz/oracle_fdw/issues/187
任何人都可以为我提供样本或示例吗?
问候,
让我们使用这个简单的 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)
不完全漂亮,但它的伎俩。