sql >> Database >  >> RDS >> Sqlserver

Gegevens invoegen via een functie met tabelwaarde in SQL Server

In SQL Server is het mogelijk om gegevens in te voegen via een tabelwaardefunctie (TVF).

Hiermee bedoel ik rijen invoegen in de onderliggende tabellen die de functie opvraagt.

Om een ​​nieuwe rij via een TVF in te voegen, gebruikt u gewoon dezelfde T-SQL INSERT syntaxis die u zou gebruiken als u gegevens rechtstreeks in de tabel invoegt.

Voorbeeld

Hier is een snel voorbeeld om te demonstreren.

De Functie

Hier is een snelle functie die basisgegevens uit een tabel selecteert.

CREATE FUNCTION dbo.udf_Cats_ITVF()
    RETURNS TABLE
AS
RETURN (
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats
    );
GO

Deze functie selecteert alle rijen uit een tabel.

Ik zou deze functie kunnen gebruiken om een ​​nieuwe rij in die tabel in te voegen.

Selecteer gegevens met de functie

Hier is hoe we normaal gesproken de functie aanroepen met een SELECT uitspraak. Dit stelt ons in staat om de huidige gegevens in de onderliggende tabel te zien.

SELECT * FROM udf_Cats_ITVF();

Resultaat:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Er zijn dus vier rijen.

Voeg een rij in via de functie

Laten we nu de TVF gebruiken om een ​​nieuwe rij toe te voegen.

INSERT INTO udf_Cats_ITVF() 
VALUES ('Scratchy', '1111111111');

SELECT * FROM udf_Cats_ITVF();

Resultaat:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
| 5       | Scratchy  | 1111111111 |
+---------+-----------+------------+

Dus ik heb met succes een nieuwe kat ingevoegd met behulp van de inline-tabelwaardefunctie.


  1. Tel het aantal opeenvolgende voorkomen van waarden in tabel

  2. Wat is IN Logische operator in SQL Server - SQL Server / TSQL-zelfstudie, deel 122

  3. Wat is het verschil tussen pls_integer en binary_integer?

  4. Hoe CONCAT_WS() werkt in PostgreSQL