先创建type类型
create or replace type get_rows as object
(
v_str VARCHAR(1000)
);
create or replace type get_rows_table as table of get_rows;
编写创建函数
create or replace function get_rows_col(v_str IN CHAR,v_str1 IN CHAR)
return get_rows_table AS
v_test get_rows_table := get_rows_table();
v_count NUMBER;
v_tstr2 VARCHAR(1000);
BEGIN
v_count :=(length(v_str)-length(replace(v_str,v_str1)))+1;
for i in 1 .. v_count LOOP
v_test.extend();
v_test(v_test.count) := get_rows(GET_SPLIT(v_str,v_str1,i));
end loop;
return v_test;
end get_rows_col;
GET_SPLIT是我编的分割方法,这里不再贴出
最后执行
SELECT * FROM table(get_rows_col(‘1;2;3;4;5;6;7;8′,’;’));
犹豫各种条件原因,这里就不再贴图了