MS SQL Server:如何确定哪个字段导致Arifmetic错误

时间:2013-09-11 09:49:29

标签: sql sql-server error-handling sql-update

我有一个更新语句,它会更新表中的很多字段。我收到了错误

  

Msg 8115,Level 16,State 8,Line 1   算术溢出错误将数字转换为数据类型数字。   声明已经终止。

它没有显示导致问题的确切字段。 有没有办法从SQL Server获取此信息? 假设一个接一个地手动检查每个字段不是一个选项。

1 个答案:

答案 0 :(得分:1)

您没有说明您的列是否允许NULL值。

CREATE TABLE T
(
D1 DECIMAL(2,2) NOT NULL,
D2 DECIMAL(2,2) NOT NULL
)

INSERT INTO T VALUES(0.99,0.99)

然后

UPDATE T SET D1=0.33, D2=2.0

提供高度信息性的

  

将数字转换为数据类型为数字的算术溢出错误。

但是

SET ARITHABORT OFF;
SET ANSI_WARNINGS OFF;
UPDATE T SET D1=0.33, D2=2.0

提供更多信息

  

无法将值NULL插入列'D2',表'MyDb.dbo.T';   列不允许空值。更新失败。

告诉你具体的问题专栏。

相关问题