- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在运行我的代码以从 Oracle DB 获取数据时出现以下错误。
[A]Oracle.ManagedDataAccess.Client.OracleParameter cannot be cast to [B]Oracle.ManagedDataAccess.Client.OracleParameter. Type A originates from 'Oracle.ManagedDataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'LoadFrom' at location 'd:\Users\mukadfar\AppData\Local\Temp\Temporary ASP.NET Files\vs\02d43168\78988466\assembly\dl3\95159e45\00d2c436_a83bd401\Oracle.ManagedDataAccess.dll'. Type B originates from 'Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'Default' at location 'd:\Users\mukadfar\AppData\Local\Temp\Temporary ASP.NET Files\vs\02d43168\78988466\assembly\dl3\0b972c52\00ac59cd_7dd5d201\Oracle.ManagedDataAccess.dll'.
这是我的代码:
var param1 = "K60";
var param2 = "2018.09.14";
var param3 = "2018.09.14";
var param4 = string.Empty;
var param5 = string.Empty;
var param6 = string.Empty;
var param7 = string.Empty;
var param8 = string.Empty;
var param9 = string.Empty;
var param10 = string.Empty;
var param11 = string.Empty;
var param12 = string.Empty;
var param13 = string.Empty;
var param14 = string.Empty;
var param15 = string.Empty;
var param16 = string.Empty;
var param17 = string.Empty;
var param18 = string.Empty;
var parameters = new[]
{
new OracleParameter("wr_proccode_PM_cmb_C179", OracleDbType.Varchar2, 100, param1 != null ? (object)param1 : DBNull.Value, ParameterDirection.Input),
new OracleParameter("wr_start_day_C179", OracleDbType.Varchar2, 100, param2 != null ? (object)param2 : DBNull.Value, ParameterDirection.Input),
new OracleParameter("wr_end_day_C179", OracleDbType.Varchar2, 100, param1 != null ? (object)param3 : DBNull.Value, ParameterDirection.Input),
new OracleParameter("wr_operating_efficiency_total", OracleDbType.Decimal, 4000, param4 != null ? (object)param4 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_time_efficiency", OracleDbType.Decimal, 4000, param5 != null ? (object)param5 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_tons_efficiency_total", OracleDbType.Decimal, 4000, param6 != null ? (object)param6 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_pope_gross", OracleDbType.Decimal, 4000, param7 != null ? (object)param7 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_packed_net_prod", OracleDbType.Decimal, 4000, param8 != null ? (object)param8 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_bottom_waste", OracleDbType.Decimal, 4000, param9 != null ? (object)param9 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_avg_gm2", OracleDbType.Decimal, 4000, param10 != null ? (object)param10 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_unplanned_shutdown_pcs", OracleDbType.Int32, 4000, param11 != null ? (object)param11 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_grade_change_pcs", OracleDbType.Int32, 4000, param12 != null ? (object)param12 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_break_pcs", OracleDbType.Int32, 4000, param13 != null ? (object)param13 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_break_hr", OracleDbType.Varchar2, 4000, param14 != null ? (object)param14 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_unplanned_shutdown_hr", OracleDbType.Varchar2, 4000, param15 != null ? (object)param15 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_packed_net_prod_pcs", OracleDbType.Int32, 4000, param16 != null ? (object)param16 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_rewinder_net_prod_pcs", OracleDbType.Decimal, 4000, param17 != null ? (object)param17 : DBNull.Value, ParameterDirection.InputOutput),
new OracleParameter("wr_warehouse_post_waste", OracleDbType.Decimal, 4000, param18 != null ? (object)param18 : DBNull.Value, ParameterDirection.InputOutput)
};
var procedure = $"Begin TP_BALELINE.getNextPlannedObjects(:wr_proccode_PM_cmb_C179, :wr_start_day_C179, :wr_end_day_C179, :wr_operating_efficiency_total, :wr_time_efficiency, :wr_tons_efficiency_total, :wr_pope_gross, :wr_packed_net_prod, :wr_bottom_waste, :wr_avg_gm2, :wr_unplanned_shutdown_pcs, :wr_grade_change_pcs, :wr_break_pcs, :wr_break_hr, :wr_unplanned_shutdown_hr, :wr_packed_net_prod_pcs, :wr_rewinder_net_prod_pcs, :wr_warehouse_post_waste); END;";
this.databaseContext.ExecuteSqlCommand(
procedure,
parameters[0],
parameters[1],
parameters[2],
parameters[3],
parameters[4],
parameters[5],
parameters[6],
parameters[7],
parameters[8],
parameters[9],
parameters[10],
parameters[11],
parameters[12],
在 ExecuteSqlCommand 行获取错误。
最佳答案
您需要的所有详细信息都在错误消息中,这里是一个缩短和强调的版本:
[A]Oracle.ManagedDataAccess.Client.OracleParameter cannot be cast to [B]Oracle.ManagedDataAccess.Client.OracleParameter. Type A originates from 'Oracle.ManagedDataAccess, Version=4.122.18.3, (snip some text) Type B originates from 'Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, (snip)
所以这里的问题是您有两个不同的 Oracle.ManagedDataAccess
副本和版本,并且您在混合它们之间的类型。
类型的完全限定名称不仅仅是文本,它还包含包含它的程序集的完整版本和签名,因此即使这两种类型在源代码方面可能 100% 相同,甚至编译- 明智的是,它们来自两个不同版本的程序集这一事实使它们不兼容。
您要做的是弄清楚两个程序集的引用位置,弄清楚您要使用哪个,并更正其他引用,使它们全部引用相同的程序集的版本。
这应该会使错误消失。
关于c# - [A]Oracle.ManagedDataAccess.Client.OracleParameter 不能转换为 [B]Oracle.ManagedDataAccess.Client.OracleParameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52379587/
我在运行我的代码以从 Oracle DB 获取数据时出现以下错误。 [A]Oracle.ManagedDataAccess.Client.OracleParameter cannot be cast
在 DAL 中开发使用 ODP .NET 的应用程序时,总是设置 OracleParameter 的 Size 属性非常烦人。例如: getSPTimeCommand.Parameters.Add("
有没有办法使用 System.Data.OracleClient 将参数添加到 IN 子句。 例如: string query = "SELECT * FROM TableName WHERE Use
我正在尝试将两行插入到表中(sequentiel)。执行第一个插入命令没有任何问题。第二个插入命令卡在 ExecuteNonQuery() 部分。当我删除返回部分(OracleParameter 和
如下面所示的代码,我想从 OracleParameter 对象获取值。它的数据类型是日期时间。 ... Dim cmd As New OracleCommand("stored_proc_name",
如下面所示的代码,我想从 OracleParameter 对象获取值。它的数据类型是日期时间。 ... Dim cmd As New OracleCommand("stored_proc_name",
我们在 Oracle 数据库中有一个表,其中包含一个类型为 Char(3 Byte) 的列。 现在我们使用参数化的 sql 来选择一些带有 DBNull.Value 的行,但它不起作用: Oracle
我想使用 ODP.NET 在 Oracle 数据库上运行各种查询,并且我想在查询中使用参数。这是一个简单的示例片段(省略了 OracleConnection 的所有明显设置位): string que
如下代码所示,我想在数据库表(oracle 11)中插入一行并返回插入行的String-Value。 using (OracleCommand cmd = con.CreateCommand()) {
我有一个这样的存储过程调用: using (OracleConnection con = new OracleConnection(ConfigurationManager.AppSettings["
我正在使用 OracleClient 库版本 1.0.5000.0,我对 OracleParameter 类及其 ICloneable 的实现感到困惑。 这是 OracleParameter 类的定义
我进行了广泛的搜索,但找不到任何相关示例。 我有一个 TimeSpan 类型的 .NET 变量,我需要将它放入 Oracle 数据库的 IntervalDayToSecond 记录中。 引用http:
在谷歌搜索了很多并没有找到我要找的东西之后,我决定问这个问题。 我正在使用来自 的这篇很棒的文章中演示的绑定(bind)变量。 2005 标题 The Values That Bind马克 A. 威廉
为了防止SQL注入(inject)。我需要将我的代码从简单的 String 更改为 OracleParameter。此外,我需要绕过 LINQ,因为它在我的 WHERE CLAUSE 中有限制,您可以
我正在使用 ADO.Net 在 Oracle 数据库中调用存储过程。存储过程有一个输出参数,它是一个 NVARCHAR2。下面是存储过程: CREATE OR replace PROCEDURE VA
我是一名优秀的程序员,十分优秀!