LOB 字段是不支持DBLINK 方式的,可以用折中的办法创建一个临时表方式,或者物化视图等方式

我的问题场景是在存储过程中查询远程表,FETCH  INTO 本地变量,这个变量定义为CLOB 类型。

SELECT t.c_field1, t.c_field2, t.c_field3
  FROM tableA@Link t
 WHERE 1=1

解决办法:改写SQL,使用视图实体化将数据先拉到本地。

with v_tmp as 
(SELECT /*+ materialize */ t.c_field1, t.c_field2, t.c_field3
  FROM tableA@Link t
 WHERE 1=1)
select c_field1, c_field2, c_field3 from v_tmp

另外也可以使用临时表将远程数据拉到本地来,效果差不多,不过我上面这种解决方式感觉更简洁一点。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐