我正在尝试存储 9999999.00000000
在 SQL Server 2008 R2 中。但是,我一再面临这个错误
Arithmetic overflow error converting numeric to data type numeric.
数据库列的类型为
DECIMAL(15,8)
请指教,如何解决。。
C# 代码:
loSqlParameters.Add(new SqlParameter("RUN", loOPERATION_TYPE.RUN.handleDBNull()));
xxxx.Database.ExecuteSqlCommand("SPNAME".getSql(loSqlParameters), loSqlParameters.Cast<object>().ToArray())
SQL Server 存储过程:
CREATE PROCEDURE [dbo].[SPNAME]
@RUN AS DECIMAL(15,8)
AS
BEGIN
INSERT INTO TABLENAME (RUN) VALUES (@RUN)
END
表架构:
Column Name Data Type Allow Nulls
RUN decimal(15,8) yes
最佳答案
在 SSMS 中执行时,这在 SQL2008R2 中正常工作。如果运行 SQL Profiler 并捕获应用程序提交的 SQL 文本,则可以检查存储过程调用,包括传递给该过程的参数。发送的参数值可能不是您期望发送的。
我的 SQL 测试代码:
CREATE TABLE MyTable
(
Run decimal(15, 8) NULL
);
GO
CREATE PROCEDURE dbo.spName
@Run AS DECIMAL(15,8)
AS
BEGIN
INSERT INTO MyTable(Run) VALUES(@Run)
END;
GO
EXEC dbo.spName 9999999.00000000;
GO
SELECT *
FROM MyTable;
关于sql - 在 SQL Server 2008 R2 : Arithmetic overflow error converting numeric to data type numeric 中存储 "9999999.00000000",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442453/