createor replace package body som_edi_morrison_pkg is function clean_csv_line(content varchar2, separator varchar2) return varchar2; end som_edi_custom_utils_pkg;
createor replace package body som_edi_custom_utils_pkg is function clean_csv_line(content varchar2, separator varchar2) return varchar2 as LANGUAGE JAVA NAME 'EDIJavaUtils.cleanCSVLine(java.lang.String, java.lang.String) return java.lang.String'; end som_edi_custom_utils_pkg;
Test
1 2 3 4 5 6 7
select som_edi_custom_utils_pkg.clean_csv_line('ab/95"508/"AP"PLE""/"10/FEB/12"', '/') from dual;
create type edi_varchar_list_type istableof varchar2(32767);
createor replace and compile java source named edi_java_test as import java.lang.*; public class edi_java_test { public static java.sql.Array split_str(String str, String separator) throws java.sql.SQLException { String[] elements = str.split(separator); oracle.jdbc.OracleDriver driver =new oracle.jdbc.OracleDriver(); java.sql.Connection conn = driver.defaultConnection(); oracle.jdbc.OracleConnection oracleConn = (oracle.jdbc.OracleConnection)conn; String typeName = "edi_varchar_list_type"; /* Yeah - typeName have to be UPPERCASE, really. */ java.sql.Array sqlArr = oracleConn.createARRAY(typeName.toUpperCase(), elements); return sqlArr; } };
createor replace function edi_split_str(p_str varchar2, p_separator varchar2) return edi_varchar_list_type as language java name 'edi_java_test.split_str(java.lang.String, java.lang.String) return java.sql.Array';
declare l_elements edi_varchar_list_type := edi_split_str('Babb,18,IT,Male', ','); begin for i in l_elements.first .. l_elements.last loop dbms_output.put_line(l_elements(i)); end loop; end;