【发布时间】:2011-12-15 14:07:46
【问题描述】:
我有一个使用多个输入参数并将它们插入 Sql 数据库的存储过程。一个参数 @CustomerId 存在问题,该参数在插入数据库时会被截断(但并非总是如此)。
C#:
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CustomerId", Convert.ToInt32(customerId));
cmd.Connection = sqlConn;
sqlConn.Open();
cmd.ExecuteNonQuery();
sqlConn.Close();
Sql SP: @CustomerId 整数
INSERT INTO dbo.tblOffers
(CustomerId)
VALUES
(@CustomerId)
sql 表数据类型:
CustomerId int not null
示例:564276117 被截断为 4276117(但并非一直发生,并且正确插入了大于 560000000 的值) 我究竟做错了什么?谢谢
【问题讨论】:
-
Convert.ToInt32(customerId)...customerId还不是int?如果它在其余代码中被视为string,那么它可能在到达这里之前就被截断了? -
您应该必须将 CustomerId 的字段数据类型更改为 bigint。
-
@AVD -
564276117在int的范围内。 -
我也考虑过 bigint,但我检查了 int 数据类型,它适合我的值范围。
-
不,在调试模式下,“customerid”参数不会被截断,但是在生产环境中它有时会被截断 - 在开发环境中我使用 Sql Srv 2008 并在生产环境中使用 2005 是否相关?
标签: sql sql-server