>From my experience, System.Data.OracleClient was the "easiest" to use right away, but ODP.NET 10g offers some advanced features that could be used outside of the DataMapper.
Roberto
On 12/2/05, Uwe Lesta <[EMAIL PROTECTED]> wrote:
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

