[Developer] #424 fix ORDS JSON response output
This commit is contained in:
@@ -83,6 +83,7 @@ BEGIN
|
|||||||
p_source => q'!
|
p_source => q'!
|
||||||
DECLARE
|
DECLARE
|
||||||
v_rows_json CLOB;
|
v_rows_json CLOB;
|
||||||
|
v_offset NUMBER := 1;
|
||||||
BEGIN
|
BEGIN
|
||||||
cb_ords_handler_pkg.set_vpd_context(:auth_header);
|
cb_ords_handler_pkg.set_vpd_context(:auth_header);
|
||||||
|
|
||||||
@@ -93,7 +94,7 @@ BEGIN
|
|||||||
'owner_emp_no' VALUE owner_emp_no,
|
'owner_emp_no' VALUE owner_emp_no,
|
||||||
'dept_code' VALUE dept_code,
|
'dept_code' VALUE dept_code,
|
||||||
'contents' VALUE contents
|
'contents' VALUE contents
|
||||||
RETURNING CLOB
|
RETURNING VARCHAR2(32767)
|
||||||
)
|
)
|
||||||
ORDER BY doc_id
|
ORDER BY doc_id
|
||||||
RETURNING CLOB
|
RETURNING CLOB
|
||||||
@@ -107,14 +108,19 @@ BEGIN
|
|||||||
|
|
||||||
:status_code := 200;
|
:status_code := 200;
|
||||||
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
||||||
HTP.P(JSON_OBJECT('rows' VALUE v_rows_json FORMAT JSON RETURNING CLOB));
|
HTP.P('{"rows":');
|
||||||
|
WHILE v_offset <= DBMS_LOB.GETLENGTH(v_rows_json) LOOP
|
||||||
|
HTP.P(DBMS_LOB.SUBSTR(v_rows_json, 32767, v_offset));
|
||||||
|
v_offset := v_offset + 32767;
|
||||||
|
END LOOP;
|
||||||
|
HTP.P('}');
|
||||||
cb_ords_handler_pkg.clear_vpd_context;
|
cb_ords_handler_pkg.clear_vpd_context;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
cb_ords_handler_pkg.clear_vpd_context;
|
cb_ords_handler_pkg.clear_vpd_context;
|
||||||
:status_code := 403;
|
:status_code := 403;
|
||||||
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
||||||
HTP.P(JSON_OBJECT('error' VALUE SQLERRM RETURNING CLOB));
|
HTP.P(JSON_OBJECT('error' VALUE SQLERRM RETURNING VARCHAR2(4000)));
|
||||||
END;
|
END;
|
||||||
!',
|
!',
|
||||||
p_items_per_page => 0
|
p_items_per_page => 0
|
||||||
|
|||||||
@@ -168,13 +168,14 @@ public class OrdsMetadataService {
|
|||||||
DECLARE
|
DECLARE
|
||||||
v_limit NUMBER := LEAST(GREATEST(NVL(:row_limit, 50), 1), 500);
|
v_limit NUMBER := LEAST(GREATEST(NVL(:row_limit, 50), 1), 500);
|
||||||
v_rows_json CLOB;
|
v_rows_json CLOB;
|
||||||
|
v_offset NUMBER := 1;
|
||||||
BEGIN
|
BEGIN
|
||||||
cb_ords_handler_pkg.set_vpd_context(:auth_header);
|
cb_ords_handler_pkg.set_vpd_context(:auth_header);
|
||||||
|
|
||||||
SELECT JSON_ARRAYAGG(
|
SELECT JSON_ARRAYAGG(
|
||||||
JSON_OBJECT(
|
JSON_OBJECT(
|
||||||
%s
|
%s
|
||||||
RETURNING CLOB
|
RETURNING VARCHAR2(32767)
|
||||||
)
|
)
|
||||||
RETURNING CLOB
|
RETURNING CLOB
|
||||||
)
|
)
|
||||||
@@ -191,14 +192,19 @@ public class OrdsMetadataService {
|
|||||||
|
|
||||||
:status_code := 200;
|
:status_code := 200;
|
||||||
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
||||||
HTP.P(JSON_OBJECT('rows' VALUE v_rows_json FORMAT JSON RETURNING CLOB));
|
HTP.P('{"rows":');
|
||||||
|
WHILE v_offset <= DBMS_LOB.GETLENGTH(v_rows_json) LOOP
|
||||||
|
HTP.P(DBMS_LOB.SUBSTR(v_rows_json, 32767, v_offset));
|
||||||
|
v_offset := v_offset + 32767;
|
||||||
|
END LOOP;
|
||||||
|
HTP.P('}');
|
||||||
cb_ords_handler_pkg.clear_vpd_context;
|
cb_ords_handler_pkg.clear_vpd_context;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
cb_ords_handler_pkg.clear_vpd_context;
|
cb_ords_handler_pkg.clear_vpd_context;
|
||||||
:status_code := 403;
|
:status_code := 403;
|
||||||
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
OWA_UTIL.MIME_HEADER('application/json', TRUE);
|
||||||
HTP.P(JSON_OBJECT('error' VALUE SQLERRM RETURNING CLOB));
|
HTP.P(JSON_OBJECT('error' VALUE SQLERRM RETURNING VARCHAR2(4000)));
|
||||||
END;
|
END;
|
||||||
""".formatted(jsonEntries, selectColumns, object.owner(), object.objectName());
|
""".formatted(jsonEntries, selectColumns, object.owner(), object.objectName());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user