1

我需要将 Oracle DB 迁移到 Postgres,我可以这样做。通过使用 FDW,我可以在 Postgres 访问 Oracle 数据。现在需要通过 Postgres 调用/执行 Oracle 的功能。

有什么办法吗?

我找到了这个链接,同样的: https ://github.com/laurenz/oracle_fdw/issues/187

任何人都可以为我提供样本或示例吗?

问候,

4

1 回答 1

3

让我们使用这个简单的 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)

不完全漂亮,但它的伎俩。

于 2017-09-22T08:39:30.827 回答