sql >> Database teknologi >  >> RDS >> Sqlserver

Indsæt data via en funktion med tabelværdi i SQL Server

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.


  1. Inkrementel statistik indsamling i 11g

  2. Liste over fremmednøgler og de tabeller, de refererer til i Oracle DB

  3. Oracle current_timestamp til sekunder konvertering

  4. Entity Framework 6 med Npgsql