Próbuję stworzyć sekwencję za pomocą tego DML i otrzymuję ten błąd:

Nieprawidłowa składnia w pobliżu "@maxbookingid".

Kod:

 DECLARE @maxBookingId AS INT 

 SELECT @maxBookingId = MAX(bookingid) 
 FROM booking

 CREATE SEQUENCE Invoice_Seq  AS INTEGER  
 START WITH @maxBookingId
 INCREMENT BY 1  
 NO CYCLE;

Jak mogę rozwiązać ten problem?

2
ak1 16 luty 2017, 16:46

2 odpowiedzi

Najlepsza odpowiedź

Niestety, nie ma tu zmiennych. Używaj dynamicznego SQL zamiast tego:

declare @maxBookingId as int 
select @maxBookingId = max(bookingid) from booking
declare @s nvarchar(4000);
set @s = N'
CREATE SEQUENCE Invoice_Seq  AS INTEGER  
START WITH ' + cast(@maxBookingId as nvarchar) + '
INCREMENT BY 1  
NO CYCLE;'

EXEC (@s);
6
dean 16 luty 2017, 13:52

Dokumentacja Stanów musi być stała. Aby go obejść, powinieneś być w stanie użyć dynamicznego SQL.

2
UnhandledExcepSean 16 luty 2017, 13:52