Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Einfügen von Daten über eine Tabellenwertfunktion in SQL Server

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.