I doubt this is an iBATIS issue - it must be a bug with your driver. JDBC is officially case insensitive when retrieving columns from a result set by name, see here (6th or 7th paragraph):
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html You could probably code around this by using "columnIndex" instead of "column" in your <result> element. Jeff Butler On 10/30/07, [EMAIL PROTECTED] < [EMAIL PROTECTED]> wrote: > > Hi, > I have find the problem, but it seems a bug, because I don't find > documentation about it. > > This is my procedure, now I paste more code than yesterday: > > CREATE PROCEDURE > [dbo].[proc_IMPUESTOSPAGADOS_SELECT_Devuelve_DirGen_UniNegPais_Paises] > @chrIdioma char(2), > @chrUsuario varchar(25), > @intIdDireccionGeneral int, > @intIdUniNegImpPag int > > /**** MORE ***/ > > IF @chrIdioma = 'ES' > BEGIN > SET @NombrePais = 'chrNombreSp as NombrePais' > END > ELSE IF @chrIdioma = 'EN' > BEGIN > SET @NombrePais = 'chrNombreEn as NombrePais' > END > > > SET @sentencia =' > SELECT ImpuestosPagados_DirGen_UniNegPais.intIdPais,' + @NombrePais > + ' > FROM ImpuestosPagados_DirGen_UniNegPais > INNER JOIN Paises_Paises > ON ImpuestosPagados_DirGen_UniNegPais.intIdPais = > Paises_Paises.intIdPais > ' > > > /***** MORE ****/ > > END > GO > > This is my sqlMap: > > <resultMap id="paisesPorDGPorUNResult" class="paisesMulti"> > <result property="intIdPais" column="intIdPais" > jdbcType="INTEGER" javaType="java.lang.String"/> > <result property="nombrePais" column="NombrePais"/> > </resultMap> > > <procedure id="getPaisesPorDGPorUN" > parameterClass="unidadesNegocio" resultMap="paisesPorDGPorUNResult"> > {call > dbo.proc_IMPUESTOSPAGADOS_SELECT_Devuelve_DirGen_UniNegPais_Paises > (#strIdioma:VARCHAR#,#strUsuario:VARCHAR#, > #intIdDireccionGeneral:INTEGER#,#intIdUniNegImpPag:INTEGER#)} > > </procedure> > > This procedure works fine using jdbc, but when I execute this procedure using > ibatis I have this exception: > > Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: > --- The error occurred in > com/repsolypf/srf/adm/imptopag/dominio/DireccionesGenerales.xml. > --- The error occurred while applying a result map. > --- Check the DireccionesGenerales.paisesPorDGPorUNResult. > --- Check the result mapping for the 'intIdPais' property. > --- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: The column > name intIdPais is not valid. > > > Changing the DB alias NombrePais to nombrePais, and changing too the > column name NombrePais to nombrePais in the resultMap it works fine. > > ¿It's alowed for iBATIS to use column (or alias) names in database > beginning by uppercase or not? > > I use iBATIS 2.3.0.677 whit SQLServer 2000, but using the SQLServer 2005 > driver. > > Thanks for your answer. > > Angel Guillén > > > ------------------------------ > *Enviado el:* martes, 30 de octubre de 2007 10:50 > *Para:* [email protected] > *Asunto:* RV: Problem with Stored Procedure SQLServer + iBatis > > > > Hello > > I have a problem mapping a stored procedure of SQL SERVER from iBATIS. > > This is my sqlMap: > > <resultMap id="paisesPorDGPorUNResult" class="paisesMulti"> > <result property="intIdPais" column="intIdPais" > jdbcType="INTEGER" javaType="java.lang.String"/> > <result property="nombrePais" column="NombrePais"/> > </resultMap> > > <procedure id="getPaisesPorDGPorUN" > parameterClass="unidadesNegocio" resultMap="paisesPorDGPorUNResult"> > {call > dbo.proc_IMPUESTOSPAGADOS_SELECT_Devuelve_DirGen_UniNegPais_Paises > (#strIdioma:VARCHAR#,#strUsuario:VARCHAR#, > #intIdDireccionGeneral:INTEGER#,#intIdUniNegImpPag:INTEGER#)} > > </procedure> > > The DB Server is a SQLServer 2000 but we are using the SQLServer 2005 JBDC > Driver (because it fix a bug that causes problems working with iBatis) > > When I execute this procedure i have this exception: > > Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: > --- The error occurred in > com/repsolypf/srf/adm/imptopag/dominio/DireccionesGenerales.xml. > --- The error occurred while applying a result map. > --- Check the DireccionesGenerales.paisesPorDGPorUNResult. > --- Check the result mapping for the 'intIdPais' property. > --- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: The column > name intIdPais is not valid. > > The column name is ok when I execute this procedure from SqlServer client, > this is the SP: > > CREATE PROCEDURE > [dbo].[proc_IMPUESTOSPAGADOS_SELECT_Devuelve_DirGen_UniNegPais_Paises] > @chrIdioma char(2), > @chrUsuario varchar(25), > @intIdDireccionGeneral int, > @intIdUniNegImpPag int > > /**** MORE ***/ > > 'SELECT* intIdPais*,' + > @NombrePais + ' > FROM > ImpuestosPagados_DirGen_UniNegPais > INNER JOIN Paises_Paises > ON > ImpuestosPagados_DirGen_UniNegPais.intIdPais = Paises_Paises.intIdPais' > > /***** MORE ****/ > > END > GO > > Do you know where is the problem? I can't see it. > > Greetings and thanks > > Angel Guillén >
