Giovanni - feel free to create a patch and attach it to a JIRA issue. Make sure to include some tests!
Jeff Butler On Nov 29, 2007 8:26 AM, Giovanni Cuccu <[EMAIL PROTECTED]> wrote: > The type handler, in its current form, it's not enough to map out > parameters since it does not allow to register out parameters before > issuing the call. > I've sucessufully create a typehandler that manages IN varray and, as > far as I can understand, ibatis is not able to support such Oracle > kind of types when they are OUT ones. > That's why I proposed an enhancement. > Giovanni > > > On Nov 29, 2007 3:17 PM, Larry Meadors <[EMAIL PROTECTED]> wrote: > > I'd try a type handler. > > > > Larry > > > > > > > > On Nov 29, 2007 5:20 AM, Giovanni Cuccu <[EMAIL PROTECTED]> > wrote: > > > Any comments on this? > > > Thanks, > > > Giovanni > > > > > > > > > On Nov 14, 2007 3:12 PM, Giovanni Cuccu <[EMAIL PROTECTED]> > wrote: > > > > Hi all, > > > > I'm currently using ibatis 2.3 with Oracle and I'm trying to > > > > mapping some oracle datatypes. For now I'm focusing on VARRAY and > with > > > > the current version of IBatis I'm able to map a String[] to a VARRAY > > > > type (where the basic type is varchar2) as an input param to a > stored > > > > procedure. > > > > What I'm not able to do is to create a mapping for an output > parameter. > > > > The case I'm currently investigating is a pl\SQL function that > returns a varray. > > > > the plain jdbc code is the following (take it a first experiment) > > > > public class TestOracleArray { > > > > > > > > /** > > > > * @param args > > > > */ > > > > public static void main(String[] args) throws Exception { > > > > OracleDataSource ods = new OracleDataSource(); > > > > String url = "jdbc:oracle:thin:@localhost > :1521:orcl"; > > > > ods.setURL(url); > > > > ods.setUser("test"); > > > > ods.setPassword("test"); > > > > Connection conn = ods.getConnection(); > > > > ArrayDescriptor desc = > ArrayDescriptor.createDescriptor("VARRAY_TEST", conn); > > > > CallableStatement csOut= conn.prepareCall("{? = call > > > > test_ibatis_varray_fuc}"); > > > > String[] elementsOUT=new String[20]; > > > > ARRAY arrayParamOut = new ARRAY (desc, conn, > elementsOUT); > > > > OracleCallableStatement ocs = > (OracleCallableStatement)csOut; > > > > ocs.registerOutParameter(1, java.sql.Types.ARRAY > ,"VARRAY_TEST"); > > > > csOut.execute(); > > > > arrayParamOut=(ARRAY)csOut.getArray(1); > > > > elementsOUT=(String[])arrayParamOut.getArray(); > > > > for (int i=0;i<elementsOUT.length;i++) { > > > > System.out.println(elementsOUT[i]); > > > > } > > > > conn.commit(); > > > > > > > > } > > > > > > > > the previous code works, my guess is that iBatis does not support > this > > > > kind of mapping mainly because of this line: > > > > ocs.registerOutParameter(1, java.sql.Types.ARRAY,"VARRAY_TEST"); > > > > > > > > there is not callback function in typehandler able to support the > > > > registration of a parameter. > > > > My proposal is to create a new interface tht extends TypeHandler and > > > > allows for custom parameter registration; and modify the code of > > > > SqlExecutor namley the method > > > > private void registerOutputParameters(CallableStatement cs, > > > > ParameterMapping[] mappings) throws SQLException { > > > > in order to accomodate the new feature. > > > > the new interface should preserve the current typeandler > > > > implementations and it will allow a new feature which is not bounded > > > > to a specific database (since custom parameter registration can be > > > > viewed as a generic JDBC concept). > > > > does anyone agree with my proposal? > > > > If yes can i open a Jira issue and try to submit some code? > > > > Thanks in advance, > > > > Giovanni > > > > > > > > > > > > -- > > > > -------------------------------------------------------------------- > > > > "You don't know the power of dark side" - Darth Vader > > > > > > > > > > > > > > > > -- > > > -------------------------------------------------------------------- > > > "You don't know the power of dark side" - Darth Vader > > > > > > > > > -- > -------------------------------------------------------------------- > "You don't know the power of dark side" - Darth Vader >