This option (STATUS = ‘$Status$’) actually worked for me.  With the parameter map I get the following error still:

 

BTW – why is STATUS = ‘$Status$’ not a good option?

 

 
[ArgumentException: Requested value VarChar2 was not found.]
   System.Enum.Parse(Type enumType, String value, Boolean ignoreCase) +872
   IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.CreateParametersForStatementText()
   IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.Prepare()
   IBatisNet.DataMapper.Configuration.Sql.SimpleDynamic.SimpleDynamicSql.BuildPreparedStatement(IDalSession session, RequestScope request, String sqlStatement)
   IBatisNet.DataMapper.Configuration.Sql.SimpleDynamic.SimpleDynamicSql.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)
   Autodesk.Consulting.BrownBags.iBatis.datamanagers.MoveRequestDataManager.getMoveRequestSummaries(MoveRequest parameters) in c:\inetpub\wwwroot\iBatisExample\Autodesk.Consulting.BrownBags.iBatis\datamanagers\MoveRequestDataManager.cs:13
   Autodesk.Consulting.BrownBags.iBatis.services.MoveService.getMoveRequestSummaries(MoveRequest parameters) in c:\inetpub\wwwroot\iBatisExample\Autodesk.Consulting.BrownBags.iBatis\services\MoveService.cs:33
   iBatisExample.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\iBatisExample\sqlMapsDemonstration.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35

   System.Web.UI.Page.ProcessRequestMain() +750

 

 

Am I missing an assembly??

 

Anybody have any other thoughts???

 

-Thanks,

 

-Joe


From: roberto [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 27, 2005 2:55 PM
To: ibatis-user-cs@incubator.apache.org
Subject: RE: Oracle 9.2 Problems

 

Using the ODP.NET provider takes a bit more work over using System.Data.OracleClient.  If “STATUS” is a string/VarChar2, you’ll need to create a parameterMap that explicitly defines the dbType and size.  For example:

 

<parameterMap id="MoveRequestSummariesParams">

<parameter property="Status" dbType="VarChar2" size="20"/>

</parameterMap>

 

Another example with other types:

 

<parameterMap id="MoveRequestInsertParams">

<parameter property="SomeIdKeyIntProperty" dbType="Int32"/>

      <parameter property="Status" dbType="VarChar2" size="20"/>             

      <parameter property="SomeOtherStringProperty" dbType="VarChar2" size="200" nullValue="ack"/>

<parameter property="SomeDecimalProperty" dbType="Decimal" precision="10" scale="2"/>

<parameter property="SomeBlobProperty" dbType="Blob" size="4000"/>

</parameterMap>

 

Ints seem to work fine for inline parameters as #MyId:Int32#.  It’s everything else …

 

You can also use the substitution format of STATUS = ‘$Status$’ (not a great option though)…

 

Hope this helps!

 

Roberto

 

 

-----Original Message-----
From: Joe Chandler [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 27, 2005 4:32 PM
To: ibatis-user-cs@incubator.apache.org
Subject: Oracle 9.2 Problems

 

I am trying to use Oracle 9.2 as the provider in .NET c# and it seems that the simple SQL Maps

Work just fine.  When I try to pass a parameter the value does not get substituted.  For example,

 

<select id="MoveRequestSummaries"

resultMap="MoveRequestSummaryResult"

parameterClass="MoveRequest">                  

                     SELECT

                            ID,

                            STATUS,

                            REQUESTER_EMPLOYEE_ID,

                            CREATED_BY,

                            CREATED,

                            MOVE_DATE

                     FROM

                            MM_OWNER_V8.RQST_MOVE

                            WHERE

                            STATUS = #Status#

</select>

Always returns 0 rows or an empty result.

 

When I switch to the MS Oracle provider and run the same Query

Without changing code it returns the expected result.

 

Here is my provider for oracle:

       <provider

              name="oracle9.2"

              enabled="true"

              assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342"

              connectionClass="Oracle.DataAccess.Client.OracleConnection"

              commandClass="Oracle.DataAccess.Client.OracleCommand"

              parameterClass="Oracle.DataAccess.Client.OracleParameter"

              parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"

              parameterDbTypeProperty="Oracle.DataAccess.Client.OracleDbType"

              dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"

              commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"

              usePositionalParameters = "false"

              useParameterPrefixInSql = "true"

              useParameterPrefixInParameter = "false"

              parameterPrefix=":"

       />

 

Does anyone have any suggestions?

 

Thanks in advance,

 

Joe

 

 

 

Reply via email to