首页 > 解决方案 > 存储过程运行时无法确定将表达式转换为数据类型 int 的算术溢出错误的原因

问题描述

我有一个调用自定义标量值函数的存储过程。当我运行存储过程时,出现错误:

消息 8115,级别 16,状态 2,第 3 行
算术溢出错误将表达式转换为数据类型 int 错误

我一直试图通过调试存储过程并逐行单步执行来找出错误的原因。我仍然无法确定它。

在 SSMS 中,我有一个查询:

USE [TESTDB]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[buildEventSum]

SELECT  'Return Value' = @return_value

当我调试并单步执行 buildEventSum,然后单步执行时,错误不会生成,直到它返回到上述查询并且您“越过”选择“返回值”行。确认@return_value 为0,所以我很难过。

任何有关如何隔离和确定原因的提示将不胜感激。

标签: sql-servertsql

解决方案


对于标量函数,您使用 SELECT:

SELECT [dbo].[buildEventSum]() AS result;

或者,如果要将结果保存到变量中:

DECLARE @result int;
SET @result=[dbo].[buildEventSum]();
SELECT @result AS result;

推荐阅读