ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mkhitaryan, Aram" <Aram.Mkhitar...@lycos-europe.com>
Subject RE: Stored procedure return value?
Date Thu, 10 Aug 2006 04:55:50 GMT
In your call you have 5 ‘?’s which means that you should have 5 parameters in your parameter
map.

If one of your parameters are OUT or INOUT just set mode in parameter map.

I think IBATIS should populate OUT or INOUT parameters into parameter map object after execution.

 

Result map should be used if your procedure have selects which contains flubId, …. columns.

 

Do not use result map if you have more than one select or you have updates or inserts in your
procedure.

 

If you just read JDBC specification, you can find a lot of good code examples.

After that you can understand this work flow much better.

 

Best,

Aram

 

________________________________

From: Robert Campbell [mailto:rrc7cz@gmail.com] 
Sent: Wednesday, August 09, 2006 7:42 PM
To: iBatis
Subject: Stored procedure return value?

 

I'm trying to call a stored procedure. I pass it an object, it returns an object of the same
type. Except it doesn't work.

    <parameterMap id="addParam" class="flubWall">
         <parameter property="flubId" jdbcType="NUMBER" javaType=" java.lang.Integer" mode="IN"/>
        <parameter property="flubName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"
/>
        <parameter property="id" jdbcType="NUMBER" javaType=" java.lang.Integer" mode="IN"/>
        <parameter property="wallId" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN"/>
        <parameter property="wallName" jdbcType="VARCHAR" javaType=" java.lang.String"
mode="IN" />
    </parameterMap>


    <resultMap id="flubWallResult" class="flubWall">
        <result property="flubId" column="FLUB_ID"/> 
        <result property="flubName" column="FLUB_NAME"/>
        <result property="id" column="FLUB_WALL_ID" />
        <result property="wallId" column="WALL_ID" /> 
        <result property="wallName" column="WALL_NAME"/>
    </resultMap>
    
    
    <procedure id="submitFlubWall" 
        parameterMap="addParam" 
        resultMap="flubWallResult">
        {call FLUB_PROTO.flub_wall_tst.submit_flub_wall (?, ?, ?, ?, ?)}
    </procedure>  


Now this doesn't work.. I would expect the call to return a ResultSet which gets mapped by
the resultMap into a new flubWall object. This doesn't happen. So I tried this: 

Added as first parameter listed in the parameterMap:
        <parameter property="output1" jdbcType="ORACLECURSOR" mode="OUT" />

Changed to:
        {? = call FLUB_PROTO.flub_wall_tst.submit_flub_wall (?, ?, ?, ?, ?)}  

This also doesn't work, I get this error as I expected:
       There is no READABLE property named 'output1' in class 'com.blah.flubWall'


So how to do it? I saw examples where an object is mapped to a Map, then the Map is passed
to the paramterMap, but that doesn't seem right.. it's like rewriting what iBatis should be
doing... 



Mime
View raw message