![](/img/trans.png)
[英]Arithmetic overflow error converting varchar to data type numeric in stored procedure
[英]Stored Procedure Error Arithmetic overflow error converting numeric to data type varchar
我知道這個問題已經被問過很多次了。 但是我用谷歌搜索了很多,也瀏覽了這里的答案,但無法理解為什么我的存儲過程會反復出現此錯誤,因為不久前相同的代碼完全正常工作。
請任何人都可以幫助我確定為什么會出現此錯誤。 此外,即使在工作時我也沒有得到我想要的輸出,因為我想按順序生成訂單號,但我得到的數字與計數相同。
USE [Sost_Dev]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [sost].[GetExternalOrderNumbers]
@Count int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @year VARCHAR(2)
DECLARE @ExternalOrderNumbers nvarchar(50)
SET @year = RIGHT(CAST(DATEPART(yy, GETUTCDATE()) AS VARCHAR(4)),2)
-- Insert statements for procedure here
BEGIN TRAN
SAVE TRAN seq
--Creating Temp Table for every isolated connection
CREATE TABLE #NewOrders(ExtOrderNumber nvarchar(50));
WHILE @Count > 0
BEGIN
INSERT INTO [sost].ServiceOrderNumberSequence DEFAULT VALUES
SET @ExternalOrderNumbers = 'ESON' + @year + RIGHT(REPLICATE('0',10) + CAST(SCOPE_IDENTITY() AS NVARCHAR(7)) ,7);
print 'External' + @ExternalOrderNumbers;
--Insert New Order Number to Temporary Tables
INSERT INTO #NewOrders values(@ExternalOrderNumbers)
SET @Count -=1
END
COMMIT
--Fetching Order Numbers from Temporary Table.
SELECT @ExternalOrderNumbers as ExternalOrderNumber from #NewOrders
END
只需改變這一行
SET @ExternalOrderNumbers = 'ESON' + @year + RIGHT(REPLICATE('0',10) + CAST(SCOPE_IDENTITY() AS NVARCHAR(100)) ,7);
編輯:根據您的要求。
SET @ExternalOrderNumbers = 'ESON' + @year + RIGHT(REPLICATE('0',10) + CAST(RIGHT(SCOPE_IDENTITY(),7) AS NVARCHAR(7)) ,7);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.