为了账号安全,请及时绑定邮箱和手机立即绑定

数据未插入表中,如果我们选择多个材料和数量,此 DAL 函数将多次调用

数据未插入表中,如果我们选择多个材料和数量,此 DAL 函数将多次调用

C#
慕姐4208626 2021-11-14 17:26:20
在此,错误出现在 catch 'ORA-01084: invalid argument in OCI call' isearch 中,为什么这个错误在代码中正常出现,它显示以下解决方案:问题在于 Oracle .Net 驱动程序的深处。我们将 Qty 字段定义为 INT。由于内部架构,数量可能为负数或空值。95% 的案例 Qty 是正整数(应该是),但有时由于调整和其他因素,它可能为空或负数。所以最后我追踪到你如何将记录放入数据库的顺序:Qty 1 Qty 0 Qty null Qty -1工作正常。但在这种情况下:Qty null Qty 1 Qty -1将在“-1”值上使用 OCI 无效参数。我在 Oracle 上创建了一张票,并将其发送给我们的产品团队进行修复。从那以后我继续前进,所以不太确定它是否以及何时修复。但是在这个 0 或 NULL 值是不会来的。注意:在查询中插入数据,将正确插入但使用存储过程不起作用。
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

ADO.NET 有一个“特性”,经常让人们绊倒;不发送null值的参数;您需要检查并指定该值。一种方法是使用空合并:nullDBNull.Value

someParam.Value = (object)intendedValue ?? DBNull.Value;

请注意,大多数 ORM 工具(EF 等)和 ADO.NET 辅助实用程序(Dapper 等)将为执行此操作。


查看完整回答
反对 回复 2021-11-14
?
三国纷争

TA贡献1804条经验 获得超7个赞

if (DBNull.Value.Equals(objComplainDetails.YARD_NAME) | objComplainDetails.YARD_NAME == string.Empty) arrParam[0].Value = null; else arrParam[0].Value = objComplainDetails.YARD_NAME;

像这样,所有数据都应该是 DAL 中的代码。


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信