问题描述
拥有这个
create table departments_json (
department_id
integer
NOT NULL
CONSTRAINT departments_json__id__pk PRIMARY KEY,department_data
CLOB
NOT NULL
CONSTRAINT departments_json__data__chk CHECK ( department_data IS JSON )
);
insert into departments_json
json values ( 110,'{
"department": "Accounting","employees": [
{
"name": "Higgins,Shelley","job": "Accounting Manager","hireDate": "2002-06-07T00:00:00"
},{
"name": "Gietz,William","job": "Public Accountant","hireDate": "2002-06-07T00:00:00"
}
]
}'
);
还有新的json:
{
"employees": [
{
"name": "Chen,John","job": "Accountant","hireDate": "2005-09-28T00:00:00"
},{
"name": "Greenberg,Nancy","job": "Finance Manager","hireDate": "2002-08-17T00:00:00"
},{
"name": "Urman,Jose Manuel","hireDate": "2006-03-07T00:00:00"
}
]
}
在POST之后,回复对我有很大帮助。但是现在是时候使用新的json更新department_data列了。我正在使用此查询:
update departments_json d
set d.department_data =
WITH employees ( json ) AS (
SELECT j.json
FROM departments_json d
CROSS APPLY JSON_TABLE(
d.department_data,'$.employees[*]'
COLUMNS (
json CLOB FORMAT JSON PATH '$'
)
) j
WHERE d.department_id = 110
UNION ALL
SELECT j.json
FROM JSON_TABLE(
'{
employees: [
{
name: Chen,John,job: Accountant,hireDate: 2005-09-28T00:00:00
},{
name: Greenberg,Nancy,job: Finance Manager,hireDate: 2002-08-17T00:00:00
},{
name: Urman,Jose Manuel,hireDate: 2006-03-07T00:00:00
}
]
}','$.employees[*]'
COLUMNS (
json CLOB FORMAT JSON PATH '$'
)
) j
)JSON_MERGEPATCH(
d.department_data,(
SELECT JSON_OBJECT(
KEY 'employees'
VALUE JSON_ARRAYAGG( json FORMAT JSON RETURNING CLOB )
FORMAT JSON
)
FROM employees
)
)
WHERE d.department_id = 110;
但是我遇到了这个错误,我不知道哪里出了错
错误:
Error en la línea de comandos : 3 Columna : 5
Informe de error -
Error SQL: ORA-00936: falta una expresión
00936. 00000 - "missing expression"
*Cause:
*Action:
怎么了,我正在执行此步骤:LINK
注意:这是我的桌子的样子:
更新
在应用MP0建议后,这就是我的查询的样子(两个选项)
但是问题是我有这个错误:
ORA-40478: output value too large (maximum: 4000)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)