I SQL Server er det muligt at indsætte data via en tabelværdi-funktion (TVF).
Med dette mener jeg at indsætte rækker i de underliggende tabeller, som funktionen forespørger på.
For at indsætte en ny række via en TVF skal du blot bruge den samme T-SQL INSERT syntaks, som du ville bruge, hvis du indsætter data direkte i tabellen.
Eksempel
Her er et hurtigt eksempel at demonstrere.
Funktionen
Her er en hurtig funktion, der vælger grundlæggende data fra en tabel.
CREATE FUNCTION dbo.udf_Cats_ITVF()
RETURNS TABLE
AS
RETURN (
SELECT
CatId,
CatName,
Phone
FROM dbo.Cats
);
GO
Denne funktion vælger alle rækker fra en tabel.
Jeg kunne bruge denne funktion til at indsætte en ny række i den tabel.
Vælg Data med funktionen
Her er, hvordan vi normalt ville starte funktionen med en SELECT udmelding. Dette gør det muligt for os at se de aktuelle data i den underliggende tabel.
SELECT * FROM udf_Cats_ITVF();
Resultat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Så der er fire rækker.
Indsæt en række via funktionen
Lad os nu bruge TVF til at tilføje en ny række.
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å det lykkedes mig at indsætte en ny kat ved hjælp af den indlejrede tabelværdi-funktion.