我想动态声明我的分区函数的范围。我不想硬编码范围值,如下所示:
创建分区函数 PartFun(smallint) 作为值的左侧范围 (1,2,3,4,5)
问题是:我要在其上创建分区的列(IDMASTER 表中的 ID)是 smallint 数据类型。
Declare @IDS NVARCHAR(100)
SELECT @IDS = coalesce(@IDS + ', ', '') + CAST(a.ID AS VARCHAR) FROM
(SELECT DISTINCT TOP 100 ID from IDMASTER ORDER BY ID ) a
--PRINT @IDS --it prints 0,1,2,3,4 like that
CREATE PARTITION FUNCTION PartFun(smallint)
AS RANGE LEFT FOR VALUES (@IDS)
收到此错误:
“无法将序号 1 指定的范围值类型隐式转换为分区函数参数类型。”
任何解决方法的想法?另外,人们是否主要使用硬编码值作为分区范围?