V SQL Serveru je možné vkládat data pomocí funkce s hodnotou tabulky (TVF).
Tím mám na mysli vkládání řádků do podkladových tabulek, na které se funkce dotazuje.
Chcete-li vložit nový řádek přes TVF, jednoduše použijte stejný T-SQL INSERT
syntaxi, kterou byste použili při vkládání dat přímo do tabulky.
Příklad
Zde je rychlý příklad k demonstraci.
Funkce
Zde je rychlá funkce, která vybírá základní data z tabulky.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Tato funkce vybere všechny řádky z tabulky.
Tuto funkci bych mohl použít k vložení nového řádku do této tabulky.
Vyberte Data pomocí funkce
Zde je návod, jak bychom normálně vyvolali funkci pomocí SELECT
prohlášení. To nám umožňuje vidět aktuální data v podkladové tabulce.
SELECT * FROM udf_Cats_ITVF();
Výsledek:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Takže existují čtyři řádky.
Vložit řádek pomocí funkce
Nyní pomocí TVF přidáme nový řádek.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Výsledek:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Takže jsem úspěšně vložil novou kočku pomocí funkce vložené tabulky s hodnotou.