Oracle SQL-使用json_表更新多行问题(Oracle 12C[12.1])
我正在尝试使用JSON更新我的表,如下所示: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
[
{
"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更新后再试一次。