パーティション関数の範囲を動的に宣言したいと考えています。以下のように、範囲値をハードコーディングしたくありません。
CREATE PARTITION FUNCTION PartFun(smallint)AS RANGE LEFT FOR VALUES (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 で指定された範囲値の型をパーティション関数パラメーターの型に暗黙的に変換できませんでした。」
回避策はありますか?また、ほとんどの人がパーティション範囲にハードコードされた値を使用しているのでしょうか?