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

Odstraňte data pomocí funkce s hodnotou tabulky na serveru SQL Server

V SQL Server je možné použít funkci s hodnotou tabulky (TVF) k odstranění dat z podkladových tabulek, na které se TVF dotazuje.

Chcete-li odstranit data tabulky prostřednictvím TVF, jednoduše použijte stejný T-SQL DELETE syntaxi, kterou byste použili při přímém mazání řádku z tabulky.

Příklad

Zde je rychlý příklad k demonstraci.

Funkce

Zde je rychlá inline funkce s hodnotou tabulky, 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 mohu také použít k odstranění řádků z 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 |
| 5       | Scratchy  | 1111111111 |
+---------+-----------+------------+

Existuje tedy pět řad.

Smažeme Scratchy.

Odstranit řádek pomocí funkce

Nyní použijeme TVF k odstranění řádku.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Výsledek:

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

Takže jsem úspěšně smazal Scratchy pomocí funkce vložené tabulky s hodnotou.


  1. Jaký je připojovací řetězec pro localdb pro verzi 11

  2. Získejte poslední vložené ID řádku (s příkazem SQL)

  3. 3 způsoby, jak vrátit seznam úloh SQL Server Agent (T-SQL)

  4. Jaké jsou případy použití pro výběr CHAR před VARCHAR v SQL?