воскресенье, 17 марта 2013 г.

Как создать многооператорную табличную функцию

-- Функция возвращающая набор значений (вектор) от 1 до N

USE AdventureWorks2012
GO
IF OBJECT_ID (N'Sales.fn_Vector') IS NOT NULL
DROP FUNCTION Sales.fn_Vector
GO

-- Создание функции

CREATE FUNCTION Sales.fn_Vector
(
    @B INT
)
RETURNS
@Table_Var TABLE
(
    ID INT
)
AS
BEGIN
    DECLARE @C INT = 1
    WHILE (@C <= @B)
    BEGIN
        INSERT @Table_Var VALUES (@C)
        SET @C += 1
    END
    RETURN
END
GO

-- Вызов функции

SELECT *
FROM Sales.fn_Vector(5)