我在同一個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