【发布时间】:2022-01-12 09:55:15
【问题描述】:
我有两个 oracle 数据库:A 和 B。 在数据库 A 上,我有一个返回用户定义类型的函数:
create or replace type my_type as object
( id number,
f2 varchar2(4000),
f3 varchar2(4000),
f4 varchar2(4000)
);
和
CREATE OR REPLACE FUNCTION my_function(p_id NUMBER)
RETURN my_type IS
v_f1 VARCHAR2;
v_f2 VARCHAR2;
v_f3 VARCHAR2;
BEGIN
SELECT a.f1, a.f2, a.f3
INTO v_f1, v_f2, v_f3
FROM my_table a
WHERE a.id= p_id;
RETURN my_type (p_id, v_f1, v_f2, v_f3);
END my_function;
当我从 Oracle A 调用此函数时,它会返回
但是,当我从 Oracle B 调用它时,它会抛出错误:
ORA-30626: 不支持远程对象类型的函数/过程参数
你能告诉我,如何将我的 SQL 查询结果(f1,f2,f3)从数据库 A 获取到数据库 B。 由于性能问题,我不想调用三次查询。
我想出的唯一解决方案是在数据库 A 上将这三个字段连接为一个值,然后在数据库 B 上对其进行子串化,您有更好的主意吗?
【问题讨论】:
-
数据是否必须来自函数?您可以改用具有四个 OUT 参数的过程吗?
标签: oracle function plsql types database-link