将密钥附加到 JSON_OBJ_COLUMN - Oracle
Append Key into JSON_OBJ_COLUMN - Oracle
在 Oracle 12c 中,我用 json 个对象创建了一个 table。
想象一下下一个样本:
id
date
json_obj
1
01-MAY-2021
{ key_1: val1, key_2: val2}
现在我想更新key_2值,并且追加key_3: val3到同一个json 与 id 1.
相关的对象
可以编辑吗?或者我必须覆盖?
前提是你的DB版本是12R2+,那么对象类型JSON_OBJECT_T
可以连续使用PARSE()
和PUT()
,然后应用标准 UPDATE
语句,例如
DECLARE
jobj JSON_OBJECT_T;
jdoc tab.json_obj%TYPE;
BEGIN
SELECT json_obj
INTO jdoc
FROM tab
WHERE id = 1;
jobj := JSON_OBJECT_T.PARSE( jdoc );
jobj.PUT( 'key_2', 'val_22' );
jobj.PUT( 'key_3', 'val_3' );
jdoc := jobj.TO_CLOB();
DBMS_OUTPUT.PUT_LINE( jdoc );
UPDATE tab
SET json_obj = jdoc
WHERE id = 1;
END;
/
在 Oracle 12c 中,我用 json 个对象创建了一个 table。
想象一下下一个样本:
id | date | json_obj |
---|---|---|
1 | 01-MAY-2021 | { key_1: val1, key_2: val2} |
现在我想更新key_2值,并且追加key_3: val3到同一个json 与 id 1.
相关的对象可以编辑吗?或者我必须覆盖?
前提是你的DB版本是12R2+,那么对象类型JSON_OBJECT_T
可以连续使用PARSE()
和PUT()
,然后应用标准 UPDATE
语句,例如
DECLARE
jobj JSON_OBJECT_T;
jdoc tab.json_obj%TYPE;
BEGIN
SELECT json_obj
INTO jdoc
FROM tab
WHERE id = 1;
jobj := JSON_OBJECT_T.PARSE( jdoc );
jobj.PUT( 'key_2', 'val_22' );
jobj.PUT( 'key_3', 'val_3' );
jdoc := jobj.TO_CLOB();
DBMS_OUTPUT.PUT_LINE( jdoc );
UPDATE tab
SET json_obj = jdoc
WHERE id = 1;
END;
/