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