【问题标题】:update json fields using apex_json package in oracle在 oracle 中使用 apex_json 包更新 json 字段
【发布时间】:2019-08-07 02:48:21
【问题描述】:

我想仅使用 oracle apex 更新 json 中的值。 首先,我将从输入中提取,使用 get_number,然后我需要更新现有列中的值

DECLARE 
    j apex_json.t_values; 
BEGIN 
    apex_json.parse(j, '{"total":83,"netAmmount":65}'); 
    DBMS_OUTPUT.put_line('Total   : ' || APEX_JSON.get_number( 'total'));
    DBMS_OUTPUT.put_line('netAmmount:'||APEX_JSON.get_number( 'netAmmount'));
    -- im looking for something like this below    
  UPDATE t SET json_column = apex_write(APEX_JSON.get_number( 'total'));
END;

请帮忙

【问题讨论】:

    标签: oracle oracle11g oracle-apex-5.1


    【解决方案1】:

    你缺少参数p_value:

    DECLARE 
        j apex_json.t_values; 
        v apex_json.t_value; 
    BEGIN 
        apex_json.parse(j, '{"total":83,"netAmmount":65}'); 
        v := apex_json.get_value(p_path=>'total',p_values=>j); 
        dbms_output.put_line(v.number_value);
    
        UPDATE t SET json_column =  v.number_value;
    END;
    

    【讨论】:

    • 它返回 null,而不是值 83。
    • DECLARE j apex_json.t_values; BEGIN apex_json.parse(j, '{"total":83,"netAmmount":65}'); dbms_output.put_line('total:' || apex_json.get_number(p_path => 'total', p0 => 1, p_values => j)); --table t, json_value column has data same as above UPDATE t SET json_column = apex_json.get_number(p_path => 'total', p0 => 1, p_values => j); END; 我能够提取数据,但我认为它在更新@IDA 中不起作用
    • 您应该将结果分配给变量,然后在更新语句中使用该变量
    • 还是不行。如果你能给我一个可行的例子,那将有很大帮助。谢谢!! @IDA
    • 我只希望在整个 json 结构中更新 total 值,而不是整个列。我的表格列的值已经是'{"total":100,"netAmmount":65}'。所以这需要更新为'{"total":83,"netAmmount":65}'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2014-02-02
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多