In SQL Server ist es möglich, Daten über eine Tabellenwertfunktion (TVF) einzufügen.
Damit meine ich das Einfügen von Zeilen in die zugrunde liegenden Tabellen, die die Funktion abfragt.
Um eine neue Zeile über ein TVF einzufügen, verwenden Sie einfach dasselbe T-SQL INSERT
Syntax, die Sie verwenden würden, wenn Sie Daten direkt in die Tabelle einfügen.
Beispiel
Hier ist ein kurzes Beispiel zur Veranschaulichung.
Die Funktion
Hier ist eine schnelle Funktion, die grundlegende Daten aus einer Tabelle auswählt.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Diese Funktion selektiert alle Zeilen einer Tabelle.
Ich könnte diese Funktion verwenden, um eine neue Zeile in diese Tabelle einzufügen.
Daten mit der Funktion auswählen
So rufen wir die Funktion normalerweise mit einem SELECT
auf Erklärung. Dadurch können wir die aktuellen Daten in der zugrunde liegenden Tabelle sehen.
SELECT * FROM udf_Cats_ITVF();
Ergebnis:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Es gibt also vier Zeilen.
Eine Zeile über die Funktion einfügen
Lassen Sie uns nun den TVF verwenden, um eine neue Zeile hinzuzufügen.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Ergebnis:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Also habe ich mithilfe der Inline-Tabellenwertfunktion erfolgreich eine neue Katze eingefügt.