Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 自定义函数中的序列对象_Sql_Sql Server - Fatal编程技术网

Sql 自定义函数中的序列对象

Sql 自定义函数中的序列对象,sql,sql-server,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 (

我试图有条件地(通过参数)从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
但海关职能部门不支持“序列的下一个值”。 错误是:在检查约束、默认对象、计算列、视图、用户定义函数、用户定义聚合、用户定义表类型、子查询、公共表表达式或派生表中不允许函数的下一个值


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

。也许您可以使用存储过程而不是函数。可以将该值作为输出参数返回。