Based on a quick look at the exception, it looks like you've run into the same issue we did, which is that the provider you are using has difficulties mapping the larger Oracle number types into the .net types.
At the time that we encountered this issue we were only in a position to evaluate the Oracle 9i client and the Microsoft client. Since the Oracle 9i client performed markedly better, we worked around the problem by modifying our query statements to cast such problematic number fields to varchar and allow ibatis.net to map those back into the desired .net numeric types. We still have yet to evaluate the 10g client, but I'd like to get to it sometime soon. In the meantime, these workarounds have been rare, so there's not been much need to push towards the 10g client, as much as I might like to dig into it. Jeremy Gray -----Original Message----- From: Uwe Lesta [mailto:[EMAIL PROTECTED] Sent: Friday, December 02, 2005 3:02 AM To: [email protected] Subject: Re: Oracle provider with iBatis dataMapper 1.2 Befor i dig into some solution i like to ask my question with other words: Which Oracle provider is best tested and is advised by the iBatis comunety ? Jeremy Gray wrote: > Can you provide any details regarding the exceptions you are seeing? We sure my test query is : <select id="SelectFilter" parameterClass="MMServer.DAL.USERSDB_Filter" resultMap="USERSSelectResult" > SELECT ID, LOGIN, FIRSTNAME, LASTNAME, ROLE_ID, ORG_ID, REMARK, EXPIRES, MODIFIED, DISABLED, ACTIVE FROM USERS <dynamic prepend="WHERE"> <isNotNull prepend="AND" property="LOGIN"> LOGIN like #LOGIN# </isNotNull> <isGreaterThan prepend="AND" property="ACTIVE" compareValue="-1"> ACTIVE = #ACTIVE# </isGreaterThan> </dynamic> </select> with <add key="provider" value="oracle10.1" /> i get [OracleTypeException: Numerische Stellenangabe liegt außerhalb des gültigen Bereiches (1 - 38)] Oracle.DataAccess.Types.OracleDecimal.ConvertToPrecScale(OracleDecimal value1, Int32 precision, Int32 scale) +667 Oracle.DataAccess.Client.OracleParameter.PreBind_Decimal() +3956 Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize) +132 Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) +2349 Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) +0 Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader() +81 Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader() +0 IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList(RequestScope request, IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate rowDelegate) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject) IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject) MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103 MMServer.Pages.ifPlayListen.Page_Load(Object sender, EventArgs e) in e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:41 with <add key="provider" value="oracleClient1.0" /> i get [Exception: Parameter 'param0': No size set for variable length data type: String.] System.Data.OracleClient.OracleParameterBinding.PrepareForBind(OracleConnection connection, Int32& offset) +720 System.Data.OracleClient.OracleCommand.Execute(OciHandle statementHandle, CommandBehavior behavior, Boolean isReader, Boolean needRowid, OciHandle& rowidDescriptor, ArrayList& refCursorParameterOrdinals) +1919 System.Data.OracleClient.OracleCommand.Execute(OciHandle statementHandle, CommandBehavior behavior, ArrayList& refCursorParameterOrdinals) +28 System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) +272 System.Data.OracleClient.OracleCommand.ExecuteReader() +7 System.Data.OracleClient.OracleCommand.System.Data.IDbCommand.ExecuteReader() +5 IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList(RequestScope request, IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate rowDelegate) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject) IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject) MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103 MMServer.Pages.ifPlayListen.Page_Load(Object sender, EventArgs e) in e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:43 If i change the condition to <isNotEqual prepend="AND" property="LOGIN" compareValue=""> LOGIN like #LOGIN# </isNotEqual> i get [DataMapperException: Error comparing in conditional fragment. Uknown 'compare to' values.] IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.ConditionalTagHandler.Compare(SqlTagContext ctx, SqlTag sqlTag, Object parameterObject) IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.IsEqualTagHandler.IsCondition(SqlTagContext ctx, SqlTag tag, Object parameterObject) IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.IsNotEqualTagHandler.IsCondition(SqlTagContext ctx, SqlTag tag, Object parameterObject) IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.ConditionalTagHandler.DoStartFragment(SqlTagContext ctx, SqlTag tag, Object parameterObject) IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren(RequestScope request, SqlTagContext ctx, Object parameterObject, IEnumerator localChildren, StringBuilder buffer) IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren(RequestScope request, SqlTagContext ctx, Object parameterObject, IEnumerator localChildren, StringBuilder buffer) IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren(RequestScope request, SqlTagContext ctx, Object parameterObject, IList localChildren) IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.Process(RequestScope request, Object parameterObject) IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.GetRequestScope(Object parameterObject, IDalSession session) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults) IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject) IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject) MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103 MMServer.Pages.ifPlayListen.Page_Load(Object sender, EventArgs e) in e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:43 > too encountered some early on, specifically with respect to default type > conversion of certain sizes of oracle number fields, and might be able > to point you in the right direction. > > Jeremy Gray <snip> > I like to ask: > > Which seems to be the best Oracle provider to work with the ibatis > DataMapper 1.2 ( latest SVN version ) ? > > Background: I get different TypeExceptions on different columntypes on > different providers. -- Kind regards Uwe Lesta at SBS-Softwaresysteme.de

