我遇到需要将序列重新启动到指定值的情况,其中此值在变量中指定或作为参数从C#程序以编程方式传递。
以下代码是我希望能够发挥作用的一个例子,但没有:
DECLARE @current_value AS BigInt = 60000;
ALTER SEQUENCE
usq_MySequence
RESTART WITH
@current_value
这样的事情确实有效:
ALTER SEQUENCE
usq_MySequence
RESTART WITH
60000
然而,这是硬编码的,我与之交互的程序只会传递参数(在.NET中使用SqlCommand)
无论如何重置具有变量或参数的序列?
答案 0 :(得分:9)
RESTART WITH
值必须是常量。使用变量设置它的唯一方法是使用一些动态SQL:
DECLARE @current_value AS BigInt = 60000;
DECLARE @s nvarchar(1000);
SET @s = N'
ALTER SEQUENCE
usq_MySequence
RESTART WITH ' + CAST(@current_value AS nvarchar(10));
EXEC (@s);