sql >> Databáze >  >> RDS >> Sqlserver

Vložení dat pomocí funkce s hodnotou tabulky na SQL Server

V SQL Serveru je možné vkládat data pomocí funkce s hodnotou tabulky (TVF).

Tím mám na mysli vkládání řádků do podkladových tabulek, na které se funkce dotazuje.

Chcete-li vložit nový řádek přes TVF, jednoduše použijte stejný T-SQL INSERT syntaxi, kterou byste použili při vkládání dat přímo do tabulky.

Příklad

Zde je rychlý příklad k demonstraci.

Funkce

Zde je rychlá funkce, která vybírá základní data z tabulky.

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

Tato funkce vybere všechny řádky z tabulky.

Tuto funkci bych mohl použít k vložení nového řádku do této tabulky.

Vyberte Data pomocí funkce

Zde je návod, jak bychom normálně vyvolali funkci pomocí SELECT prohlášení. To nám umožňuje vidět aktuální data v podkladové tabulce.

SELECT * FROM udf_Cats_ITVF();

Výsledek:

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

Takže existují čtyři řádky.

Vložit řádek pomocí funkce

Nyní pomocí TVF přidáme nový řádek.

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

SELECT * FROM udf_Cats_ITVF();

Výsledek:

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

Takže jsem úspěšně vložil novou kočku pomocí funkce vložené tabulky s hodnotou.


  1. Vlastní kalendář a připomenutí pro Android

  2. Skryté funkce v Oracle

  3. ORA-01264 ve fyzickém pohotovostním režimu

  4. Odstraňte duplicitní řádky z malé tabulky