Я пытаюсь создать уникальный номер карты из следующей функции. Я поставил свой запрос внутри цикла while
, чтобы предотвратить дублирование номера карты, но все же я получаю повторяющиеся номера.SQL Server WHILE
Кто-нибудь может мне помочь?
Create FUNCTION GetCardNumber()
RETURNS varchar(20)
AS
BEGIN
Declare @NewID varchar(20);
Declare @NewID1 varchar(36) ;
Declare @Counter int = 0;
While(1=1)
Begin
Set @NewID1 = (SELECT [MyNewId] FROM Get_NewID);
Set @NewID = '2662464' + '823' + '001' +right(YEAR(GETUTCDATE()),2) +(left(convert(varchar,ABS(CAST(CAST(@NewID1 AS VARBINARY(5)) AS bigint))),5));
Set @Counter = (Select count(*) from ContactTBL where ContactMembershipID = @NewID);
If @Counter = 0
BEGIN
BREAK;
END
End
return @newID
END
Go
Обновление: Я получаю MyNewID из просмотра:
CREATE VIEW Get_NewID
AS
SELECT NEWID() AS MyNewID
GO
Большое спасибо заранее.
@GordonLinoff: NewID() не будет работать в функции –
, , Я знаю это. Тогда я сразу забыл об этом. Затем мне снова напомнили. Приветствия. –
Как ваш запрос может получить повторяющиеся значения? Я мог видеть, что вы получите бесконечный цикл, но я не вижу, как любые значения будут дублироваться. –