使用变量或参数指定ALTER SEQUENCE的重启值

时间:2014-05-01 06:03:25

标签: c# sql-server

我遇到需要将序列重新启动到指定值的情况,其中此值在变量中指定或作为参数从C#程序以编程方式传递。

以下代码是我希望能够发挥作用的一个例子,但没有:

DECLARE @current_value AS BigInt = 60000;

ALTER SEQUENCE
    usq_MySequence
RESTART WITH
    @current_value

这样的事情确实有效:

ALTER SEQUENCE
    usq_MySequence
RESTART WITH
    60000

然而,这是硬编码的,我与之交互的程序只会传递参数(在.NET中使用SqlCommand)

无论如何重置具有变量或参数的序列?

1 个答案:

答案 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);