sql - 在 SQL Server 2008 R2 : Arithmetic overflow error converting numeric to data type numeric 中存储 "9999999.00000000"

标签 sql sql-server

我正在尝试存储 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/

相关文章:

c# - 如何检索连接到 Linq .NET 中第一行的一个表行和行列表

.net - .NET SqlConnection 和 DataSet 的内存泄漏

sql-server - 在sql server management studio中多次打开存储过程文件

java - 连接到 Microsoft SQL Server 时 Java 运行时环境检测到 fatal error

c# - 什么是 sql 版本 662?

mysql - 如何在 SQL 上创建多值属性

sql - ORACLE SQL,其中结尾需要时间

sql - 是否有任何单个 sql 命令可以将整个数据库从一个 sql 服务器导出到另一台?

sql-server - 几个外键和级联删除SQL Server

sql-server - SQL Server 2008将地理点保存为十六进制