sql >> Databasteknik >  >> RDS >> Sqlserver

Infoga data via en tabellvärderad funktion i SQL Server

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.


  1. Postgres pg_dump dumpar databasen i en annan ordning varje gång

  2. Rumsmigrering Ändra tabell lägger inte till ny kolumn och migrerar blir anropade igen och igen

  3. Close kallades aldrig uttryckligen på Database

  4. Fördelar och säkerhet i Amazon Relational Database Service