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.