Revision: 5163
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5163&view=rev
Author: ricbrown
Date: 2010-08-17 21:38:41 +0000 (Tue, 17 Aug 2010)
Log Message:
-----------
Turned on BindByName for ODP to handle parameters correctly.
http://tgaw.wordpress.com/2006/03/03/ora-01722-with-odp-and-command-parameters/
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Driver/OracleDataClientDriver.cs
Modified: trunk/nhibernate/src/NHibernate/Driver/OracleDataClientDriver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Driver/OracleDataClientDriver.cs 2010-08-16 15:16:22 UTC (rev 5162)
+++ trunk/nhibernate/src/NHibernate/Driver/OracleDataClientDriver.cs 2010-08-17 21:38:41 UTC (rev 5163)
@@ -21,6 +21,7 @@
private const string connectionTypeName = "Oracle.DataAccess.Client.OracleConnection";
private const string commandTypeName = "Oracle.DataAccess.Client.OracleCommand";
private static readonly SqlType GuidSqlType = new SqlType(DbType.Binary, 16);
+ private readonly PropertyInfo oracleCommandBindByName;
private readonly PropertyInfo oracleDbType;
private readonly object oracleDbTypeRefCursor;
@@ -37,6 +38,9 @@
connectionTypeName,
commandTypeName)
{
+ System.Type oracleCommandType = ReflectHelper.TypeFromAssembly("Oracle.DataAccess.Client.OracleCommand", driverAssemblyName, false);
+ oracleCommandBindByName = oracleCommandType.GetProperty("BindByName");
+
System.Type parameterType = ReflectHelper.TypeFromAssembly("Oracle.DataAccess.Client.OracleParameter", driverAssemblyName, false);
oracleDbType = parameterType.GetProperty("OracleDbType");
@@ -88,6 +92,10 @@
{
base.OnBeforePrepare(command);
+ // need to explicitly turn on named parameter binding
+ // http://tgaw.wordpress.com/2006/03/03/ora-01722-with-odp-and-command-parameters/
+ oracleCommandBindByName.SetValue(command, true, null);
+
CallableParser.Detail detail = CallableParser.Parse(command.CommandText);
if (!detail.IsCallable)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|