在oracle中传递标量问题不大,那么如何传递数组呢?
CREATE OR REPLACE TYPE "JSPLIT_STR" IS TABLE OF VARCHAR2 (255) /--首先定义plsql的数组类型, CREATE OR REPLACE FUNCTION jsplit(str IN VARCHAR2, deli IN VARCHAR2) RETURN jsplit_str AS LANGUAGE JAVA NAME 'jutil.jsplit(java.lang.String,java.lang.String) return oracle.sql.ARRAY'; / --这是一个java函数声明的plsql包装,sybase同样需要这样一个包装,尽管语法有所不同。 create or replace and compile java source named jutil as import java.io.*; import oracle.sql.*; import java.sql.*; import oracle.jdbc.driver.*; public class jutil { public static oracle.sql.ARRAY jsplit(String str,String deli) throws java.sql.SQLException,IOException { String []val={"11111","222222222","333333333333"}; //oracle.sql.ARRAY pp; Connection conn=new OracleDriver().defaultConnection(); ArrayDescriptor descriptor=ArrayDescriptor.createDescriptor("JSPLIT_STR",conn); return new oracle.sql.ARRAY(descriptor,conn,val); // return str.split(deli); } } /--上面是一个非党简单的以数组为返回参数的java函数例子,可见用java来返回数组类型是比较麻烦的。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/342.html