In SQL Server is het mogelijk om gegevens in te voegen via een tabelwaardefunctie (TVF).
Hiermee bedoel ik rijen invoegen in de onderliggende tabellen die de functie opvraagt.
Om een nieuwe rij via een TVF in te voegen, gebruikt u gewoon dezelfde T-SQL INSERT
syntaxis die u zou gebruiken als u gegevens rechtstreeks in de tabel invoegt.
Voorbeeld
Hier is een snel voorbeeld om te demonstreren.
De Functie
Hier is een snelle functie die basisgegevens uit een tabel selecteert.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Deze functie selecteert alle rijen uit een tabel.
Ik zou deze functie kunnen gebruiken om een nieuwe rij in die tabel in te voegen.
Selecteer gegevens met de functie
Hier is hoe we normaal gesproken de functie aanroepen met een SELECT
uitspraak. Dit stelt ons in staat om de huidige gegevens in de onderliggende tabel te zien.
SELECT * FROM udf_Cats_ITVF();
Resultaat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Er zijn dus vier rijen.
Voeg een rij in via de functie
Laten we nu de TVF gebruiken om een nieuwe rij toe te voegen.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Resultaat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Dus ik heb met succes een nieuwe kat ingevoegd met behulp van de inline-tabelwaardefunctie.