将Oracle UDT传递给存储过程会在ExecuteNonQuery上引发错误

时间:2015-05-07 20:04:42

标签: c# .net oracle stored-procedures user-defined-types

过去两天我一直在墙上撞墙。本质上,我使用Visual Studio的Oracle工具(ODAC 12c Release 3和Visual Studio的Oracle Developer Tools(12.1.0.2.1))创建了UDT,并添加了所需的属性。

我传递的对象是一个UDT对象,它有一个UDT集合,它包裹着一些属性。

当从数据库中提取数据时,它会起作用,但在尝试将UDT对象作为参数传递给存储过程时会抛出一个拟合。 我检查了所有想到的东西: - 类型; - 命令配置:类型设置为OracleType.Object(尝试使用数组 - 无更改);

以下是调用堆栈的错误:

  

"动态程序集不支持调用的成员。"

     

在System.Reflection.Emit.InternalAssemblyBuilder.get_Location()

     

at Oracle.DataAccess.Types.OracleUdt.GetAllReferencedAssemblies()

     

在   Oracle.DataAccess.Client.RegAndConfigRdr.setudtmapping(哈希表&安培;   s_mapUdtNameToMappingObj)

     

at Oracle.DataAccess.Types.OracleUdt.SetCustomTypeMappings()

     

at Oracle.DataAccess.Types.OracleUdt.GetUdtName(String   customTypeName,String dataSource)

     

在   Oracle.DataAccess.Client.OracleParameter.SetUDTFromCustomObject(的OracleConnection   conn,IOracleCustomType customObj,Int32 i)

     

在   Oracle.DataAccess.Client.OracleParameter.PreBind_OracleObject(的OracleConnection   康涅狄格州)

     

在   Oracle.DataAccess.Client.OracleParameter.PreBind_Object(的OracleConnection   康涅狄格州)

     

在   Oracle.DataAccess.Client.OracleParameter.PreBind(的OracleConnection   conn,IntPtr errCtx,Int32 arraySize)

     

at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()

     

在OracleDatabaseHelper.OracleCommandEx.ExecuteNonQuery()

0 个答案:

没有答案