暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用DBLINK或远程数据库的JSON查询

ASKTOM 2020-07-21
501

问题描述

我已经使用下面的查询创建了一个数据库链接,将12.1版本DB链接到12.2版本DB。由于12.1版本的Oracle DB不支持JSON。

CREATE DATABASE LINK dblink_SBX
   CONNECT TO SOURCEDB IDENTIFIED BY SOURCEDB
   USING '(DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = XYZ)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SID= ABCD)
  )
  )';
复制


我试图在DBLINK创建的数据库中执行JSON查询:

select JSON_OBJECT
('EMPNO' VALUE EMP_ID)
from EMP;
复制


我也尝试在from子句中使用DBLINK,如下所示:

select JSON_OBJECT
('EMPNO' VALUE EMP_ID)
from EMP@dblink_SBX;
复制


我收到以下错误:

ORA-02063: preceding line from DBLINK_SBX 
00907. 00000 -  "missing right parenthesis" 
*Cause: *Action:
复制


请帮忙。

请注意: am在12.2版本DB上执行JSON查询,其中DB链接是使用源数据库 (12.1版本) 创建的。

专家解答

您运行的查询必须是本地数据库上的有效语法。JSON_object是一个12.2的功能,所以:

select JSON_OBJECT
('EMPNO' VALUE EMP_ID)
from EMP@dblink_SBX;
复制


即使在远程数据库上有效,也无法在12.1上使用。

根据你想做的事情,你可以通过以下方式解决这个问题:

-在包含您的查询的12.2数据库上创建函数
-通过DB链接调用函数
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论