2017-02-16 29 views
0

Я пытаюсь создать последовательность с помощью этого DML, и я получаю эту ошибку:Как создать последовательность, начиная с Максом Id таблицы

Incorrect syntax near '@maxBookingId'.

Код:

DECLARE @maxBookingId AS INT 

SELECT @maxBookingId = MAX(bookingid) 
FROM booking 

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

Как я могу решить Эта проблема?

ответ

2

К сожалению, здесь нет переменных. Вместо этого используйте динамический SQL:

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); 
2

documentation утверждает, что он должен быть постоянным. Чтобы обойти это, вы сможете использовать динамический SQL.