Для такого требования нет встроенной функции.
Но вы можете легко построить запрос, как показано ниже, для разбора этих строк:
SELECT y.*
FROM (
select trim(regexp_substr(str,'[^,]+', 1, level)) as str1
from (
SELECT 'test1:First string, test2: Second string, test3: Third string' as Str
FROM dual
)
connect by regexp_substr(str, '[^,]+', 1, level) is not null
) x
CROSS APPLY(
select trim(regexp_substr(str1,'[^:]+', 1, 1)) as key,
trim(regexp_substr(str1,'[^:]+', 1, 2)) as value
from dual
) y
KEY VALUE
------ --------------
test1 First string
test2 Second string
test3 Third string
Затем вы можете использовать этот запрос в своей функции и передать его результат в массив.
Я оставляю это упражнение для вас, я думаю, что вы можете справиться с ним (совет: используйте функцию Oracle массовый сбор )