Раньше тоже использовал такой способ, но недавно в недрах Apexa был найден пакет, который работает заметно быстрее.
Сначала создаются типы:
create or replace type TypeObject as object
(
val varchar2(4000)
);
create or replace type TypeList as table of TypeObject;
Затем функция:
create or replace function F_EXT_SUBSTR(str in clob,ch in varchar2) return TypeList pipelined is
v_path APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
v_path := APEX_UTIL.STRING_TO_TABLE(str, ch);
for i in v_path.first..v_path.last loop
pipe row (TypeObject(v_path(i)));
end loop;
exception when others then
null;
end;
И потом очень удобно использовать в запросах:
select val from table(f_ext_substr('100,200,300,400,500',','))
Я думаю, для такой функции стоит сделать исключение, так как она используется очень часто
Сначала создаются типы:
Затем функция:
И потом очень удобно использовать в запросах: