2

我试图有条件地(通过参数)从 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 函数。

是否有任何解决方法/其他方法可以实现这一目标?

4

0 回答 0