Thanks that worked - I did have to hack the DTD to add the remapResults attribute for procedure tag.

Karen Koch wrote:

Try adding remapResults="true" to the procedure declaration:

    <procedure id="queryRecords" resultClass="java.util.HashMap"
parameterMap="queryParameters" remapResults="true">
         { ? = call RECORDSET.getPagedRecordCursor(?, ?, ?, ?, ?, ?) }

I'm certainly not positive this is the answer, but this helped us with a
similar problem (wasn't a procedure, just a select statement).

--- Mike Fagan <mfagan@tde.com> wrote:

I have a stored function that returns a refcursor with the different 
columns based on passed in parameters.
My problem is that IBATIS is caching the column names from the first 
call to this stored function causing later calls with a different 
refcursor definition to fail due to different columns returned. I have 
set cacheModelsEnabled to false and was wondering if I am missing 
another config setting. Using version 2.0.9

Here is my sqlMap:

    <parameterMap id="queryParameters" class="map" >
        <parameter property="result" jdbcType="ORACLECURSOR" mode="OUT"/>
        <parameter property="user" jdbcType="NUMERIC" javaType="long" 
mode="IN" />
        <parameter property="resultid" jdbcType="NUMERIC" 
javaType="long" mode="IN" />
        <parameter property="startidx" jdbcType="NUMERIC" javaType="int" 
mode="IN" />
        <parameter property="endidx" jdbcType="NUMERIC" javaType="int" 
mode="IN" />
        <parameter property="fields" jdbcType="VARCHAR" 
javaType="java.lang.String" mode="IN" />
        <parameter property="total" jdbcType="NUMERIC" javaType="long" 
mode="OUT" />

    <procedure id="queryRecords" resultClass="java.util.HashMap" 
parameterMap="queryParameters" >
        { ? = call RECORDSET.getPagedRecordCursor(?, ?, ?, ?, ?, ?) }

Mike Fagan