You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by amutap <am...@gmail.com> on 2008/06/27 08:59:42 UTC

IBatis on Spring:: error when calling SP. the SP returns cursor

Hi guys,

I have a stored procedure that returns a cursor. my Sp has only this single
OUT param. 

following is my sqlmapping:
	<resultMap id="notifications" class="lenderNtfnDTO">
       	<result property="lenderId" column="LNDR_OID"/>
        <result property="lenderNotificationTypeId"
column="LNDR_NTFN_TMPL_CD"/>
        <result property="lenderQASIdentifier" column="LNDR_QAS_IND"/>
	</resultMap>
	<parameterMap id="notificationsParameterMap" class="map">			
		<parameter property="CO_LNDR_NTFN" javaType="java.sql.ResultSet"
jdbcType="ORACLECURSOR" mode="OUT" resultMap="notifications" />
	</parameterMap>
	<procedure id="getNotificationsByLender"
parameterMap="notificationsParameterMap" >
		{call pkg_ntfn.p_get_ntfn_by_lndr(?)}
	</procedure>

here, the procedure out param (cursor) name is "CO_LNDR_NTFN".

I call it using following - 
           HashMap map = new HashMap();
           map.put("CO_LNDR_NTFN", null);
           
           sqlMapClientTemplate.queryForObject("getNotifications", map);
           
           notificationList = (ArrayList)map.get("CO_LNDR_NTFN");          

I receive following error - 

--- The error occurred in com/.../sqlmap/SendNotificationMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SendNotification.notificationsParameterMap.  
--- Check the statement (update procedure failed).  
--- Cause: java.sql.SQLException: Bigger type length than Maximum; nested
exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/.../sqlmap/SendNotificationMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SendNotification.notificationsParameterMap.  
--- Check the statement (update procedure failed).  
--- Cause: java.sql.SQLException: Bigger type length than Maximum

I do not understand the issue is with the way I am handling the resultset or
something is wrong with the procedure!

my iBatis version is 2.3.0.677 and Spring version is 1.2.7

looking forward for a reply..

Thanks,
Amit

-- 
View this message in context: http://www.nabble.com/IBatis-on-Spring%3A%3A-error-when-calling-SP.-the-SP-returns-cursor-tp18149219p18149219.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


Re: IBatis on Spring:: error when calling SP. the SP returns cursor

Posted by Amit Jagtap <am...@gmail.com>.
Thanks for the reply Larry!

Yes it is indeed a driver issue. I replaced my oracle 9X driver with a 10X 
one according to my db version and it solved the problem.

Cheers,
Amit



Larry Meadors wrote:
> 
> This looks like an Oracle error...have you tried to reproduce this
> with a simpler scenario (i.e., a simple JDBC call)?
> 
> Larry
> 
> 
> On Fri, Jun 27, 2008 at 12:59 AM, amutap <am...@gmail.com> wrote:
>>
>> Hi guys,
>>
>> I have a stored procedure that returns a cursor. my Sp has only this
>> single
>> OUT param.
>>
>> following is my sqlmapping:
>>        <resultMap id="notifications" class="lenderNtfnDTO">
>>        <result property="lenderId" column="LNDR_OID"/>
>>        <result property="lenderNotificationTypeId"
>> column="LNDR_NTFN_TMPL_CD"/>
>>        <result property="lenderQASIdentifier" column="LNDR_QAS_IND"/>
>>        </resultMap>
>>        <parameterMap id="notificationsParameterMap" class="map">
>>                <parameter property="CO_LNDR_NTFN"
>> javaType="java.sql.ResultSet"
>> jdbcType="ORACLECURSOR" mode="OUT" resultMap="notifications" />
>>        </parameterMap>
>>        <procedure id="getNotificationsByLender"
>> parameterMap="notificationsParameterMap" >
>>                {call pkg_ntfn.p_get_ntfn_by_lndr(?)}
>>        </procedure>
>>
>> here, the procedure out param (cursor) name is "CO_LNDR_NTFN".
>>
>> I call it using following -
>>           HashMap map = new HashMap();
>>           map.put("CO_LNDR_NTFN", null);
>>
>>           sqlMapClientTemplate.queryForObject("getNotifications", map);
>>
>>           notificationList = (ArrayList)map.get("CO_LNDR_NTFN");
>>
>> I receive following error -
>>
>> --- The error occurred in com/.../sqlmap/SendNotificationMap.xml.
>> --- The error occurred while applying a parameter map.
>> --- Check the SendNotification.notificationsParameterMap.
>> --- Check the statement (update procedure failed).
>> --- Cause: java.sql.SQLException: Bigger type length than Maximum; nested
>> exception is com.ibatis.common.jdbc.exception.NestedSQLException:
>> --- The error occurred in com/.../sqlmap/SendNotificationMap.xml.
>> --- The error occurred while applying a parameter map.
>> --- Check the SendNotification.notificationsParameterMap.
>> --- Check the statement (update procedure failed).
>> --- Cause: java.sql.SQLException: Bigger type length than Maximum
>>
>> I do not understand the issue is with the way I am handling the resultset
>> or
>> something is wrong with the procedure!
>>
>> my iBatis version is 2.3.0.677 and Spring version is 1.2.7
>>
>> looking forward for a reply..
>>
>> Thanks,
>> Amit
>>
>> --
>> View this message in context:
>> http://www.nabble.com/IBatis-on-Spring%3A%3A-error-when-calling-SP.-the-SP-returns-cursor-tp18149219p18149219.html
>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/IBatis-on-Spring%3A%3A-error-when-calling-SP.-the-SP-returns-cursor-tp18149219p18157539.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


Re: IBatis on Spring:: error when calling SP. the SP returns cursor

Posted by charlie bird <ze...@yahoo.co.uk>.
I remember seeing this using the Oracle jdbc driver that came with 8i - it was quite buggy.
Try using a more up to date driver. IIRC the 9i one fixed this (and numerous other ones) problems. 


--- On Fri, 27/6/08, Larry Meadors <la...@gmail.com> wrote:

> From: Larry Meadors <la...@gmail.com>
> Subject: Re: IBatis on Spring:: error when calling SP. the SP returns cursor
> To: user-java@ibatis.apache.org
> Date: Friday, 27 June, 2008, 2:26 PM
> This looks like an Oracle error...have you tried to
> reproduce this
> with a simpler scenario (i.e., a simple JDBC call)?
> 
> Larry
> 
> 
> On Fri, Jun 27, 2008 at 12:59 AM, amutap
> <am...@gmail.com> wrote:
> >
> > Hi guys,
> >
> > I have a stored procedure that returns a cursor. my Sp
> has only this single
> > OUT param.
> >
> > following is my sqlmapping:
> >        <resultMap id="notifications"
> class="lenderNtfnDTO">
> >        <result property="lenderId"
> column="LNDR_OID"/>
> >        <result
> property="lenderNotificationTypeId"
> > column="LNDR_NTFN_TMPL_CD"/>
> >        <result
> property="lenderQASIdentifier"
> column="LNDR_QAS_IND"/>
> >        </resultMap>
> >        <parameterMap
> id="notificationsParameterMap"
> class="map">
> >                <parameter
> property="CO_LNDR_NTFN"
> javaType="java.sql.ResultSet"
> > jdbcType="ORACLECURSOR" mode="OUT"
> resultMap="notifications" />
> >        </parameterMap>
> >        <procedure
> id="getNotificationsByLender"
> > parameterMap="notificationsParameterMap"
> >
> >                {call pkg_ntfn.p_get_ntfn_by_lndr(?)}
> >        </procedure>
> >
> > here, the procedure out param (cursor) name is
> "CO_LNDR_NTFN".
> >
> > I call it using following -
> >           HashMap map = new HashMap();
> >           map.put("CO_LNDR_NTFN", null);
> >
> >          
> sqlMapClientTemplate.queryForObject("getNotifications",
> map);
> >
> >           notificationList =
> (ArrayList)map.get("CO_LNDR_NTFN");
> >
> > I receive following error -
> >
> > --- The error occurred in
> com/.../sqlmap/SendNotificationMap.xml.
> > --- The error occurred while applying a parameter map.
> > --- Check the
> SendNotification.notificationsParameterMap.
> > --- Check the statement (update procedure failed).
> > --- Cause: java.sql.SQLException: Bigger type length
> than Maximum; nested
> > exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> > --- The error occurred in
> com/.../sqlmap/SendNotificationMap.xml.
> > --- The error occurred while applying a parameter map.
> > --- Check the
> SendNotification.notificationsParameterMap.
> > --- Check the statement (update procedure failed).
> > --- Cause: java.sql.SQLException: Bigger type length
> than Maximum
> >
> > I do not understand the issue is with the way I am
> handling the resultset or
> > something is wrong with the procedure!
> >
> > my iBatis version is 2.3.0.677 and Spring version is
> 1.2.7
> >
> > looking forward for a reply..
> >
> > Thanks,
> > Amit
> >
> > --
> > View this message in context:
> http://www.nabble.com/IBatis-on-Spring%3A%3A-error-when-calling-SP.-the-SP-returns-cursor-tp18149219p18149219.html
> > Sent from the iBATIS - User - Java mailing list
> archive at Nabble.com.
> >
> >


      __________________________________________________________
Not happy with your email address?.
Get the one you really want - millions of new email addresses available now at Yahoo! http://uk.docs.yahoo.com/ymail/new.html

Re: IBatis on Spring:: error when calling SP. the SP returns cursor

Posted by Larry Meadors <la...@gmail.com>.
This looks like an Oracle error...have you tried to reproduce this
with a simpler scenario (i.e., a simple JDBC call)?

Larry


On Fri, Jun 27, 2008 at 12:59 AM, amutap <am...@gmail.com> wrote:
>
> Hi guys,
>
> I have a stored procedure that returns a cursor. my Sp has only this single
> OUT param.
>
> following is my sqlmapping:
>        <resultMap id="notifications" class="lenderNtfnDTO">
>        <result property="lenderId" column="LNDR_OID"/>
>        <result property="lenderNotificationTypeId"
> column="LNDR_NTFN_TMPL_CD"/>
>        <result property="lenderQASIdentifier" column="LNDR_QAS_IND"/>
>        </resultMap>
>        <parameterMap id="notificationsParameterMap" class="map">
>                <parameter property="CO_LNDR_NTFN" javaType="java.sql.ResultSet"
> jdbcType="ORACLECURSOR" mode="OUT" resultMap="notifications" />
>        </parameterMap>
>        <procedure id="getNotificationsByLender"
> parameterMap="notificationsParameterMap" >
>                {call pkg_ntfn.p_get_ntfn_by_lndr(?)}
>        </procedure>
>
> here, the procedure out param (cursor) name is "CO_LNDR_NTFN".
>
> I call it using following -
>           HashMap map = new HashMap();
>           map.put("CO_LNDR_NTFN", null);
>
>           sqlMapClientTemplate.queryForObject("getNotifications", map);
>
>           notificationList = (ArrayList)map.get("CO_LNDR_NTFN");
>
> I receive following error -
>
> --- The error occurred in com/.../sqlmap/SendNotificationMap.xml.
> --- The error occurred while applying a parameter map.
> --- Check the SendNotification.notificationsParameterMap.
> --- Check the statement (update procedure failed).
> --- Cause: java.sql.SQLException: Bigger type length than Maximum; nested
> exception is com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in com/.../sqlmap/SendNotificationMap.xml.
> --- The error occurred while applying a parameter map.
> --- Check the SendNotification.notificationsParameterMap.
> --- Check the statement (update procedure failed).
> --- Cause: java.sql.SQLException: Bigger type length than Maximum
>
> I do not understand the issue is with the way I am handling the resultset or
> something is wrong with the procedure!
>
> my iBatis version is 2.3.0.677 and Spring version is 1.2.7
>
> looking forward for a reply..
>
> Thanks,
> Amit
>
> --
> View this message in context: http://www.nabble.com/IBatis-on-Spring%3A%3A-error-when-calling-SP.-the-SP-returns-cursor-tp18149219p18149219.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>