add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE myjson( doc VARCHAR2(4000) check (doc is JSON) );

INSERT INTO myjson VALUES('{
"totalResultsCount": 19,
"geonames": [
{
"geonameId": 2593109,
"fcode": "ADM1"
},
{
"geonameId": 3336899,
"fcode": "ADM1"
}]
}
');

1 rows affected
SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS row_id, js.product
FROM myjson
CROSS JOIN JSON_TABLE(
doc, '$.geonames[*]' COLUMNS (
product VARCHAR(100) PATH '$.geonameId',
fcode VARCHAR(100) PATH '$.fcode'
)
) js
WHERE js.fcode = 'ADM1'
ROW_ID PRODUCT
0 2593109
1 3336899
DECLARE
json_array_t OWA.VC_ARR;
BEGIN
FOR c IN
(
SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS row_id, js.product
FROM myjson
CROSS JOIN JSON_TABLE(
doc, '$.geonames[*]' COLUMNS (
product VARCHAR(100) PATH '$.geonameId',
fcode VARCHAR(100) PATH '$.fcode'
)
) js
WHERE js.fcode = 'ADM1' )
LOOP
json_array_t(c.row_id) := c.product;
DBMS_OUTPUT.PUT_LINE( 'value for json_array_t('||c.row_id||') is '||json_array_t(c.row_id) );
END LOOP;
END;
/

1 rows affected

dbms_output:
value for json_array_t(0) is 2593109
value for json_array_t(1) is 3336899