I SQL Server är det möjligt att infoga data via en tabellvärderad funktion (TVF).
Med detta menar jag infoga rader i de underliggande tabellerna som funktionen frågar efter.
För att infoga en ny rad via en TVF, använd helt enkelt samma T-SQL INSERT
syntax som du skulle använda om du infogar data direkt i tabellen.
Exempel
Här är ett snabbt exempel att visa.
Funktionen
Här är en snabbfunktion som väljer grundläggande data från en tabell.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Denna funktion väljer alla rader från en tabell.
Jag skulle kunna använda den här funktionen för att infoga en ny rad i den tabellen.
Välj Data med funktionen
Så här skulle vi normalt anropa funktionen med en SELECT
påstående. Detta gör att vi kan se aktuell data i den underliggande tabellen.
SELECT * FROM udf_Cats_ITVF();
Resultat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Så det finns fyra rader.
Infoga en rad via funktionen
Låt oss nu använda TVF för att lägga till en ny rad.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Resultat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Så jag lyckades infoga en ny katt med den inline-tabellvärderade funktionen.