From: <ric...@us...> - 2010-08-17 21:38:47
|
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. |