我试图有条件地(通过参数)从 4 个序列中获取下一个值。在自定义标量值函数中,我尝试使用“序列的下一个值”。序列定义为
CREATE SEQUENCE [dbo].[sequence1]
AS [int]
START WITH 1
INCREMENT BY 1
MINVALUE -2147483648
MAXVALUE 2147483647
CACHE
GO
函数定义为:
CREATE FUNCTION dbo.GetConditionalNextCounterValue
(
@CounterID tinyint
)
RETURNS int
AS
BEGIN
DECLARE @Counter AS INT
-- IF CounterID=1 then return value from Sequence1
IF (@CounterID = 1)
BEGIN
set @Counter = next value for sequence1;
END
IF (@CounterID = **2**)
BEGIN
set @Counter = next value for sequence2;
END
RETURN @Counter
END
但是海关功能不支持“序列的下一个价值”。错误是:检查约束、默认对象、计算列、视图、用户定义的函数、用户定义的聚合、用户定义的表类型、子查询、公用表表达式或派生表中不允许使用 NEXT VALUE FOR 函数。
是否有任何解决方法/其他方法可以实现这一目标?