ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sundar Sankaranarayanan" <Sundar.Sankaranaraya...@phoenix.edu>
Subject RE: Weird IN OUT Param problem.
Date Wed, 30 Jan 2008 22:01:51 GMT
Perfect. That was it!!! I changed it to float and it worked. Thanks a
lot for your help Jeff. I truly appreciate your fast response too..
 
 
Sundar

________________________________

From: Jeff Butler [mailto:jeffgbutler@gmail.com] 
Sent: Wednesday, January 30, 2008 2:55 PM
To: user-java@ibatis.apache.org
Subject: Re: Weird IN OUT Param problem.


NUMBER is not a valid jdbcType - that's at least one problem.
Obviously, this is not so critical on the IN parameters, but it causes
problems for the OUT/INOUT parameters.  A java.lang.Long would typically
correspond to jdbcType BIGINT.
 
See java.sql.Types for valid jdbcTypes.
 
You're also asking for an automatic down cast.  This may or may not
work, depending on the database.
 
Jeff Butler


 
On Jan 30, 2008 3:44 PM, Sundar Sankaranarayanan
<Sundar.Sankaranarayanan@phoenix.edu> wrote:


	Thanks for the immediate response Jeff.
	 
	My sql-map is something like this.
	 
	<

	sqlMap> 

	<parameterMap id="exampleParam" class="map">

	<parameter property="p_irn" jdbcType="NUMBER"
javaType="java.lang.Long" mode="IN" />

	<parameter property="p_orga_number" jdbcType="NUMBER"
javaType="java.lang.Long" mode="IN" />

	<parameter property="p_csph" jdbcType="NUMBER"
javaType="java.lang.Long" mode="IN" />

	<parameter property="p_grade" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN" />

	<parameter property="p_activity_id" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN" />

	<parameter property="p_activity_title" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN" />

	<parameter property="p_term_date" jdbcType="DATE"
javaType="java.sql.Date" mode="IN" />

	<parameter property="p_cred_att" jdbcType="NUMBER"
javaType="java.lang.Double" mode="IN" />

	<parameter property="p_reuse_code" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN" />

	<parameter property="p_tran_act_oid" jdbcType="NUMBER"
javaType="java.lang.Long" mode="INOUT"/>

	<parameter property="p_clas_rost_#" jdbcType="NUMBER"
javaType="java.lang.Long" mode="INOUT"/>

	</parameterMap>

	

	<procedure id="example"

	parameterMap="exampleParam">

	{call example(?,?,?,?,?,?,?,?,?,?,?)}

	</procedure>

	</sqlMap>

	 
	 
	The last 2 params are float in the Database. I am not sure if
this has something to do with the procedure returning multiple out
params.
	
	
________________________________

	From: Jeff Butler [mailto:jeffgbutler@gmail.com] 
	Sent: Wednesday, January 30, 2008 2:39 PM
	To: user-java@ibatis.apache.org
	Subject: Re: Weird IN OUT Param problem.
	
	
	Make sure you are specifying the jdbcType of the out/inout
parameters in your parameter map.
	 
	Jeff Butler
	
	
	On Jan 30, 2008 3:37 PM, Sundar Sankaranarayanan
<Sundar.Sankaranarayanan@phoenix.edu> wrote:
	

		Hi All, 
		I have a stored procedure,  which is something like
this.
		 
		call example(?,?,?,?,?,?)
		 
		The first four params are IN params and the last 2 are
out params. If I set the mode="OUT" or set the mode as "INOUT" in the
sql-map xml file I get a 
		 
		 
		                --- Cause: java.sql.SQLException

		: Invalid column type; nested exception is
com.ibatis.common.jdbc.exception.NestedSQLException: 

		                --- The error occurred in
ibatis/config/procedures/example.xml. 

		                --- The error occurred while executing
query procedure. 

		                --- Check the {call
example(?,?,?,?,?,?)}

		                --- Check the output parameters
(register output parameters failed). 

		                --- Cause: java.sql.SQLException:
Invalid column type

		                at
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translat
e(SQLStateSQLExceptionTranslator.java:121)

		                at
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.tran
slate(SQLErrorCodeSQLExceptionTranslator.java:322)

		                at
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClient
Template.java:197)

		                at
org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResul
t(SqlMapClientTemplate.java:220)

		                at
org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapC
lientTemplate.java:267)

		                at
com.apollo.sisaw.entry.dao.implementation.IbatisTranscriptActivityDaoImp
l.insertTranscriptActivity(IbatisTranscriptActivityDaoImpl.java:408)

		                at
com.apollo.sisaw.entry.dao.implementation.IbatisTranscriptActivityDaoImp
lTest.testInsertTranscriptActivity(IbatisTranscriptActivityDaoImplTest.j
ava:197)

		                at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

		. 
		The procedure does run fine if I change the mode to "IN"
but the values that I expect to be set into the input map I provide is
being set as null. I dont know what has to be done. I am using Spring
with Ibatis together and have an oracle database. Any help on this is
appreciated.
		 
		 
		Thanks and Regards
		Sundar .




Mime
View raw message