Oracle SQL-使用json_表更新多行问题(Oracle 12C[12.1])

Oracle SQL-使用json_表更新多行问题(Oracle 12C[12.1]),sql,json,oracle,Sql,Json,Oracle,我正在尝试使用JSON更新我的表,如下所示: [ { "NEWDATAPATH": "/user/data/2019/10/28/data-1.zip", "CATID": -1 }, { "NEWDATAPATH": "/user/data/2019/10/28/data-2.zip", "CATID": -2 }, { "NEWDATAPATH": "/user/data/2019/10/28/data-3.zip", "C

我正在尝试使用JSON更新我的表,如下所示:

[
  {
    "NEWDATAPATH": "/user/data/2019/10/28/data-1.zip",
    "CATID": -1
  },
  {
    "NEWDATAPATH": "/user/data/2019/10/28/data-2.zip",
    "CATID": -2
  },
  {
    "NEWDATAPATH": "/user/data/2019/10/28/data-3.zip",
    "CATID": -3
  }
]
使用以下查询:

UPDATE IMGTABLE v
SET (DELDATE, DATAPATH) = (SELECT v.EXTENDDATE, j.NEWDATAPATH
                           FROM json_table(Details, '$[*]' COLUMNS(CATID NUMBER PATH '$.CATID',
                                                                   NEWDATAPATH VARCHAR(100) PATH '$.NEWDATAPATH')) j
                           WHERE v.CATID = j.CATID)                                             
WHERE EXISTS (SELECT 1
              FROM json_table(Details, '$[*]' COLUMNS(CATID NUMBER PATH '$.CATID')) j
              WHERE v.CATID = j.CATID);
我对上述代码的问题是,它只会更新第一行(CATID=-1),并为剩余的匹配行清空感兴趣的列值

---------------------------------------------------------------------
CATID |    DELDATE  |    EXTENDATE| DATAPATH                         
---------------------------------------------------------------------
 -1   |   10-28-2019|   10-28-2020|  "/user/data/2019/10/28/data-1.zip"
---------------------------------------------------------------------
 -2   |   (null)    |   10-28-2020|  (null)
---------------------------------------------------------------------
 -3   |   (null)    |   10-28-2020|  (null)
---------------------------------------------------------------------

任何帮助都将不胜感激

详细信息
来自哪里?它是
IMGTABLE
中的一列吗?对不起,我应该指定。详细信息是“在CLOB中”,对于保存JSON的过程,当我尝试在PLSQL块中复制它时,您的update语句工作正常(在Oracle 12.2.0.1上)。我不确定这是否是12.1版本的问题,或者您的代码中是否有我们看不到的其他内容。谢谢,可能是这样,我必须在Oracle更新后再试一次。
详细信息
来自哪里?它是
IMGTABLE
中的一列吗?对不起,我应该指定。详细信息是“在CLOB中”,对于保存JSON的过程,当我尝试在PLSQL块中复制它时,您的update语句工作正常(在Oracle 12.2.0.1上)。我不确定这是否是12.1版本的问题,或者是您的代码中我们看不到的其他内容。谢谢,可能是它,我必须在Oracle更新后再试一次。