我在同一个SQL Server上有两个数据库。相同的代码。将数据类型数值转换为int时出错
我有一个输入参数为@Test INT
的存储过程。在一个数据库中,当我将NUMERIC
值传递给该输入时,它会被截断并且一切正常。在另外一个,做同样的事情的时候,我得到以下错误:
Error converting data type numeric to int
这里是存储过程签名:
CREATE PROCEDURE [dbo].[blProductGetTariff]
(
@CurrencyID INT,
@ProductID INT,
@TradeDate DATETIME,
@TotalDays INT,
@onTariff NUMERIC(22, 10) OUTPUT
)
,这里是我如何调用该存储过程:
EXEC blProductGetTariff @CurrencyID,
@MTPLY_VolumeID,
@TradeDate,
@VolumeParam,
@VolumeMultiplierRate OUTPUT
@VolumeParam
是数字,它会在一个分贝中正确输入@TotalDays
,但不会在第二个分支中输入。
什么是可能的数据库设置负责这个,是否有一个?或者我错过了一些东西,这种奇怪的行为还有其他原因吗? “Darron在他的一个评论中提出了一个非常好的观点:”另外,看上面的代码,如果你传递一个数字(22,10),你可能会溢出整数int。你必须使数字变小或通过bigint“..他是对的。因此,将INT更改为BIGINT可以解决问题,但我仍然不明白为什么它不会在第一个数据库中发生,因为在INT中一切正常,我使用完全相同的数据(实际上是相同的文件)进行测试。
请给出一些代码在一个数据库中正常工作,但不在其他数据库中。 – 2013-02-20 17:08:49
请检查arithabort和arithignore在两个数据库中是否都是相同的(每个Darin都在下面)。就此而言,兼容性级别是相同的。 – 2013-02-20 18:01:44