2017-02-16 27 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);