@@ -577,6 +577,66 @@ CREATE OR REPLACE PACKAGE BODY transient_json_store IS
577
577
578
578
END;
579
579
580
+ FUNCTION get_raw_values (
581
+ p_array_id IN NUMBER,
582
+ p_type IN CHAR
583
+ )
584
+ RETURN t_varchars IS
585
+
586
+ v_array json_core.t_json_value;
587
+ v_raw_values t_varchars;
588
+
589
+ v_name VARCHAR2(4000);
590
+ v_pattern VARCHAR2(4000);
591
+
592
+ v_value_id NUMBER;
593
+ v_value json_core.t_json_value;
594
+
595
+ v_element_i PLS_INTEGER;
596
+ v_last_element_i PLS_INTEGER;
597
+
598
+ BEGIN
599
+
600
+ v_array := get_value(p_array_id);
601
+
602
+ IF v_array.type != 'A' THEN
603
+ --Value is not an array!
604
+ error$.raise('JDC-00012');
605
+ END IF;
606
+
607
+ v_raw_values := t_varchars();
608
+ v_last_element_i := 0;
609
+
610
+ v_name := v_value_child_ids.NEXT(v_array.id || '-');
611
+ v_pattern := v_array.id || '-%';
612
+
613
+ WHILE v_name LIKE v_pattern LOOP
614
+
615
+ v_value_id := v_value_child_ids(v_name);
616
+ v_value := v_values(v_value_id);
617
+
618
+ IF v_value.type NOT IN (p_type, 'E') THEN
619
+ -- Type conversion error!
620
+ error$.raise('JDC-00010');
621
+ END IF;
622
+
623
+ v_element_i := v_value.name;
624
+
625
+ FOR v_i IN v_last_element_i..v_element_i LOOP
626
+ v_raw_values.EXTEND(1);
627
+ END LOOP;
628
+
629
+ v_raw_values(v_element_i + 1) := v_value.value;
630
+
631
+ v_name := v_value_child_ids.NEXT(v_name);
632
+ v_last_element_i := v_element_i + 1;
633
+
634
+ END LOOP;
635
+
636
+ RETURN v_raw_values;
637
+
638
+ END;
639
+
580
640
FUNCTION index_of (
581
641
p_array_id IN NUMBER,
582
642
p_type IN VARCHAR2,
0 commit comments