В SQL Server е възможно да се вмъкнат данни чрез функция с таблично стойност (TVF).
Под това имам предвид вмъкване на редове в основните таблици, които функцията отправя заявки.
За да вмъкнете нов ред чрез TVF, просто използвайте същия T-SQL INSERT синтаксис, който бихте използвали, ако вмъквате данни директно в таблицата.
Пример
Ето един бърз пример за демонстрация.
Функцията
Ето една бърза функция, която избира основни данни от таблица.
CREATE FUNCTION dbo.udf_Cats_ITVF()
RETURNS TABLE
AS
RETURN (
SELECT
CatId,
CatName,
Phone
FROM dbo.Cats
);
GO
Тази функция избира всички редове от таблица.
Бих могъл да използвам тази функция, за да вмъкна нов ред в тази таблица.
Изберете данни с функцията
Ето как обикновено бихме извикали функцията с SELECT изявление. Това ни позволява да видим текущите данни в основната таблица.
SELECT * FROM udf_Cats_ITVF();
Резултат:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Така че има четири реда.
Вмъкване на ред чрез функцията
Сега нека използваме TVF, за да добавим нов ред.
INSERT INTO udf_Cats_ITVF()
VALUES ('Scratchy', '1111111111');
SELECT * FROM udf_Cats_ITVF();
Резултат:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Така че успешно вмъкнах нова котка, използвайки вградената функция с таблица.