【发布时间】:2021-11-22 06:59:23
【问题描述】:
我需要在 PL/SQL 中有一个存储过程,它返回一个包含 json 对象的字符串。 此对象必须是表示表格行的对象列表。
例如我有桌子
MY_TABLE(ID, TB_VALUE)
输出必须是:
[
{
"id":"1",
"value":"valueTest"
},
{
"id":"2",
"value":"valueTest2"
},
{
"id":"3",
"value":"valueTest3"
}
]
我的存储过程是这样的:
CREATE OR REPLACE PACKAGE BODY "PKG_GETCOR" AS
PROCEDURE SelectProc(output OUT VARCHAR2) IS
v_json_start CHAR(1) := '[';
v_json_end CHAR(1) := ']';
l_first_rec BOOLEAN := TRUE;
BEGIN
output := v_json_end;
FOR output IN (SELECT * FROM MY_TABLE)
LOOP
IF NOT l_first_rec
THEN
output := output || ',';
END IF;
output := output || JSON_OBJECT('id' VALUE ID, 'value' VALUE TB_VALUE));
END LOOP;
output := output || (v_json_end);
DBMS_OUTPUT.PUT_LINE(output);
END SelectProc;
END PKG_GETCOR;
实现这一目标的最佳方法是什么? 我应该使用 DBMS_OUTPUT.PUT_LINE 吗?
【问题讨论】:
-
您的输出是无效的 JSON,因为数组结尾有逗号。
标签: sql oracle stored-procedures plsql