自定义函数中的序列对象

时间:2013-09-08 11:16:24

标签: sql sql-server

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

是否有任何解决方法/其他方式可以实现此目的?

0 个答案:

没有答案