【发布时间】:2014-06-24 09:31:27
【问题描述】:
下面是我的 SQL 存储过程代码。请注意,这是一个购物网站。当我在购物车并对小计进行折扣时(例如 2467 - 5% = 2345.65 是返回值),然后单击继续付款,我收到此错误:Error converting data type nvarchar to int。
Line 211: int result = _com.ExecuteNonQuery();
这是我的代码:
create proc [dbo].[usp_ins_and_update_other_cart_details]
@Guestid varchar(max),
@DisAmount int,
@ShipAmount int,
@SubTotal int,
@GrandAmount int
as
begin
if not exists(select Guestid FROM DiscountAndShippingdetails WHERE Guestid =@Guestid)
begin
insert into DiscountAndShippingdetails
( Guestid, DisAmount, ShipAmount, SubTotal, GrandAmount )
values(@Guestid,@DisAmount,@ShipAmount,@SubTotal,@GrandAmount);
end
else
begin
update DiscountAndShippingdetails
set DisAmount = @DisAmount
, ShipAmount = @ShipAmount
, SubTotal = @SubTotal
, GrandAmount = @GrandAmount
where Guestid = @Guestid;
end
end
【问题讨论】:
-
你也必须发布你的 SQL 查询。
-
这是什么?你必须表现出你的努力。在这里,我们不知道您为 nvarchar 和 int 分配了什么。即使我们不知道如何从您的问题开始?
-
问题不在这里。问题出在您的 SQL 查询中。在单引号中包含 varchar 和 nvarchar 数据。
-
是 2345.65 SubTotal 还是 Grand Amount ?如果是这样,那么您的程序可能是错误的。您必须更改数据类型,否则您必须将值转换为 int,然后尝试插入数据库。
-
在提供折扣后 2345.65 是大笔金额,我想像 2345.65 一样将这个值四舍五入 2346 有没有办法四舍五入这个十进制值,请帮助