CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000) FUNCTION fn_split(p_str IN CLOB, p_delimiter IN VARCHAR2) RETURN ty_str_split IS str VARCHAR2(4000); str_split ty_str_split := ty_str_split(); x_length Integer; ----使用的时候用 select * from table(p_view_param.fn_split('HNGJ-FBZ-20210322-04;HNGJ-FBZ-20210316-02',';') ) BEGIN select length(regexp_replace(p_str, '[^' || p_delimiter || ']', NULL)) into x_length from dual; for x in 1 .. x_length loop select a.val into str from (SELECT rownum seq, regexp_substr(p_str, '[^' || p_delimiter || ']+', 1, rownum) val FROM dual connect BY rownum <= length(regexp_replace(p_str, '[^' || p_delimiter || ']', NULL))) a where a.seq = x; str_split.extend; str_split(str_split.COUNT) := str; end loop; RETURN str_split; END;