DECLARE
l_fav json_object_t;
l_num NUMBER;
BEGIN
l_fav := json_object_t ('{"favorite_flavor":"chocolate"}');
/* The default */
l_fav.on_error (0);
l_num := l_fav.get_number ('favorite_flavor');
DBMS_OUTPUT.put_line ('Number = ' || l_num);
END;
Number =
DECLARE
l_fav json_object_t;
l_num NUMBER;
BEGIN
l_fav := json_object_t ('{"favorite_flavor":"chocolate"}');
/* Raise all errors */
l_fav.on_error (1);
l_num := l_fav.get_number ('favorite_flavor');
END;
ORA-40566: JSON path expression selected a value of different data type. ORA-06512: at "SYS.JDOM_T", line 418 ORA-06512: at "SYS.JSON_OBJECT_T", line 256 ORA-06512: at line 10 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-40566
DECLARE
l_fav json_object_t;
l_eats json_array_t;
BEGIN
l_fav := json_object_t ('{"favorite_flavor":"chocolate"}');
l_eats := JSON_ARRAY_T ('["Stirfry", "Yogurt", "Mosquitos"]');
/* Invalid inputs */
l_eats.on_error (4);
/* So this will NOT raise an exception */
DBMS_OUTPUT.PUT_LINE (l_fav.get_number ('favorite_flavor'));
l_eats.put (-1, 'Ice Cream');
DBMS_OUTPUT.PUT_LINE (l_eats.get_size());
END;
ORA-40578: invalid or non-existent array position ORA-06512: at "SYS.JDOM_T", line 255 ORA-06512: at "SYS.JSON_ARRAY_T", line 192 ORA-06512: at line 15 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-40578