ORACLE PIPE ROW 将一个字符串分成多条记录


转载:http://blog.csdn.net/goodleiwei/article/details/11484991
  1. create or replace function row_split(var_str in string, var_split In String)  
  2.   return t_ret_table  
  3.   PIPELINED as  
  4.   var_tmp     varchar2(4000);  
  5.   var_element varchar2(4000);  
  6.   n_length    Number := length(var_split);  
  7. begin  
  8.   var_tmp := var_str;  
  9.   while instr(var_tmp, var_split) > 0 loop  
  10.     var_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1);  
  11.     var_tmp     := substr(var_tmp,  
  12.                           instr(var_tmp, var_split) + n_length,  
  13.                           length(var_tmp));  
  14.     pipe row(var_element);  
  15.   end loop;  
  16.   pipe row(var_tmp);  
  17.   return;  
  18. end row_split;

  1. select * from table(row_split(area_str, ',')) 
 

COLUMN_VALUE
1 111
2 222
3 333

请使用浏览器的分享功能分享到微信等