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