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-----
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
|
- Oracle 9.2 Problems Joe Chandler
- RE: Oracle 9.2 Problems Kit Cragin
- RE: Oracle 9.2 Problems roberto
- RE: Oracle 9.2 Problems Joe Chandler