ろご

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;
        




Copyrightc 夏椰@わんくま同盟 All Rights Reserved.