我知道这个问题已经被问了很多次了。但是我在谷歌上搜索了很多,也浏览了这里的答案,但是我不能理解为什么我的存储过程反复给出这个错误,因为不久前,相同的代码工作得很好。
请任何人可以帮助我找出为什么这个错误来了。而且,即使当它工作时,我没有得到我想要的输出,因为我想按顺序生成订单号,但我得到的数字与计数的数量相同。
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
有关我的SQLServer中的错误,请参见下图
请找出结果,所有的订单号都是一样的,但我想以连续的方式。
发布于 2020-03-05 17:14:20
只需更改此行即可
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);
https://stackoverflow.com/questions/60541589
复制相似问题