Я создал хранимую процедуру, которая должна возвращать уникальный номер, увеличивая значение в таблице каждый раз, когда она вызывается.
ALTER PROCEDURE [dbo].[GetNextNumber] @Next_Number char(9) output AS
BEGIN
BEGIN TRAN
DECLARE @Current_Number int
SET @Current_Number = (SELECT CONVERT(int, Counter) FROM CounterTable)
IF(@Current_Number IS NULL)
BEGIN
SET @Next_Number = '000000000'
INSERT INTO CounterTable (Counter) VALUES (@Next_Number)
END
ELSE IF(@Current_Number >= 999999999)
BEGIN
SET @Next_Number = '000000000'
UPDATE dbo.CounterTable SET Counter = @Next_Number
END
ELSE
BEGIN
SET @Next_Number = REPLACE(STR(@Current_Number + 1, 9),' ', '0')
UPDATE dbo.CounterTable SET Counter = @Next_Number
END
COMMIT TRAN
END
Иногда хранимая процедура возвращает один и тот же номер дважды. Что я сделал не так?