将密钥附加到 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;
/