本文介紹了PLSQL循環通過JSON對象的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
基本上我有一個類似于[{";group";:";groupa";,";Status";:";active";},{";group";:";groupb";,";Status";:";inactive";}]的json,我只想循環和提取組,并將它們保存在變量中,以便循環并將組與某個變量進行比較。
例如
group := 'groupc'
while counter < jsonGroup.count
loop
if jsonGroup(counter) := group then ....
是否可以將組作為數組或表保存到jsonGroup中?
謝謝
推薦答案
可以使用JSON_ARRAY_T
功能將值存儲到數組中,如MT0所述,或者使用JSON_TABLE
,如果您的JSON已經存儲在表中,這可能會更好。
下面是如何使用這兩種方法將組存儲到數組中的示例。
DECLARE
l_json_text VARCHAR2 (100)
:= '[{"group":"groupa","status":"active"},{"group":"groupb","status":"inactive"}]';
TYPE tab_t IS TABLE OF VARCHAR2 (100);
l_table tab_t := tab_t ();
l_array json_array_t;
PROCEDURE print_tab
IS
BEGIN
FOR i IN 1 .. l_table.COUNT
LOOP
DBMS_OUTPUT.put_line (l_table (i));
END LOOP;
END;
BEGIN
l_array := json_array_t (l_json_text);
l_table.EXTEND (l_array.get_size);
FOR i IN 1 .. l_array.get_size
LOOP
l_table (i) := TREAT (l_array.get (i - 1) AS json_object_t).get_string ('group');
END LOOP;
DBMS_OUTPUT.put_line ('After JSON_ARRAY_T method');
print_tab;
l_table.delete;
DBMS_OUTPUT.put_line ('After delete');
print_tab;
SELECT grp
BULK COLLECT INTO l_table
FROM JSON_TABLE (l_json_text, '$[*]' COLUMNS grp PATH '$.group');
DBMS_OUTPUT.put_line ('After JSON_TABLE method');
print_tab;
END;
/
這篇關于PLSQL循環通過JSON對象的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,