Why FORMAT JSON is Used
It preserves the embedded JSON structure when building the outer object, avoiding character-escaping issues.
CREATE OR REPLACE FUNCTION get_rh_cpu_utilization_json RETURN CLOB IS
l_json CLOB;
l_items CLOB;
l_chart CLOB;
BEGIN
l_chart := get_rh_chart_data_json();
l_items := get_rh_summary_json();
SELECT JSON_OBJECT(
'items' VALUE l_items FORMAT JSON,
'chart' VALUE l_chart FORMAT JSON
RETURNING CLOB
)
INTO l_json
FROM dual;
RETURN l_json;
END get_rh_cpu_utilization_json;
/