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