SQL Server TVF(テーブル値関数)-連続生成関数-
概要
引数として初期値、最大値、加算数の3つを取り、
初期値から加算数を足して、最大値を超えない値を持つ行の集合を返す。
使用例
SELECT * FROM [dbo].[GENERATE_SERIES](1,10,2) ;
連続生成関数(1,10,2)
| num |
| 1 |
| 3 |
| 5 |
| 7 |
| 9 |
仕様
テーブル値関数として作成してあります。
とりうる値はINTの範囲としてください。
コード
CREATE FUNCTION GENERATE_SERIES(@start int, @end int, @step int = 1)
RETURNS @ret TABLE (num int)
BEGIN
DECLARE @counter int ;
IF (@step = 0 )
RETURN ;
IF ( @start > @end AND @step > 0 ) OR
( @start < @end AND @step < 0 )
BEGIN
SET @counter = @end ;
SET @end = @start ;
END;
ELSE
SET @counter = @start ;
WHILE ( @step > 0 AND @counter <= @end ) OR
( @step < 0 AND @counter >= @end )
BEGIN
insert into @ret values(@counter);
SET @counter = @counter + @step ;
END ;
RETURN ;
END;