I am not understanding why you are returning a database type instead
of just a number.

Why not just return a number?

Larry



On 10/6/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:


Hi, Larry

 If I use a return parameter

 <parameterMap id="paraMap" class="">
 <parameter property="a_given_key" jdbcType="INTEGER"
javaType="java.lang.Integer" mode="OUT"/>
 </parameterMap>

 <procedure id="get_key_2" parameterMap="paraMap">
 { ? = call ut_Foo.get_key_2 }
 </procedure>

 and retrieve it on the Java side

        lSqlMapClient.update( "get_key_2", lHashMap );

 the PreparedStatement seems to be good

 DEBUG [main] - {pstm-100001} PreparedStatement: { ? = call ut_Foo.get_key_2
}

 But a while after you got an exception

com.ibatis.common.jdbc.exception.NestedSQLException:
 --- The error occurred in
it/finmatica/gpj/aa/frontebd/FooTest.xml.
 --- The error occurred while applying a parameter map.
 --- Check the GPJ.paraMap.
 --- Check the statement (update procedure failed).
 --- Cause: java.sql.SQLException: ORA-06550: line 1, column 20:
 PLS-00382: expression is of wrong type
 ORA-06550: line 1, column 7:
 PL/SQL: Statement ignored

 [...]
 at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91)
 at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:500)
 Probably iBatis tries to generate code to access a number, instead the
returned data is a

 type t_PK is record
 ( tipo_dato_ID number(10)
 );

 At this point, I should in some specify that I want to get a t_PK record
type not a jdbcType="INTEGER".

 <parameterMap id="paraMap" class="">
 <parameter property="a_given_key" jdbcType="something here for the t_PK
record type" .../>
 </parameterMap>

 But how could I do it?
 Is my reasoning correct?
 Otherwise, please, let you write the right parameterMap specification that
solves the question.

 ciao

 [EMAIL PROTECTED] scritti il 06/10/2006 16:34:25


 > No, I meant just using multiple parameters, one for each field.
 >
 > Crude, but effective.
 >
 > Larry
 >
 >
 > On 10/6/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
 > >
 > >
 > > [EMAIL PROTECTED] scritti il 06/10/2006 16:01:09
 > >
 > >  > Sorry, I haven't been following this thread that closely, but why
not
 > >  > use out parameters?
 > >  >
 > >  > Larry
 > >
 > >  Do you mean that it's possible to use the typeName attribute of the
 > > parameterMap statement?
 > >
 > >  <parameterMap id="parameterMapName" [class="com.domain.Product"]>
 > >  <parameter property ="propertyName" [jdbcType="VARCHAR"]
 > >  [javaType="string"]
 > >  [nullValue="-9999"]
 > >  [typeName="{REF or user-defined type}"]
 > >  [resultMap=someResultMap]
 > >  [mode=IN|OUT|INOUT]
 > >  [typeHandler=someTypeHandler]
 > >  [numericScale=2]/>
 > >  <parameter …… />
 > >  <parameter …… />
 > >  </parameterMap>
 > >
 > >  Jeff wrote that iBatis is a quite thin layer over JDBC.
 > >  Well, but if the Oracle JDBC driver does NOT support structured types
(such
 > > as record), how could iBatis?
 > >  I haven't explored anymore the issue, maybe I'm wrong
 > >
 > >  ciao
 > >  Cesare



Reply via email to