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

Elimina i dati tramite una funzione con valori di tabella in SQL Server

In SQL Server è possibile utilizzare una funzione con valori di tabella (TVF) per eliminare i dati dalle tabelle sottostanti che la TVF interroga.

Per eliminare i dati della tabella tramite un TVF, utilizzare semplicemente lo stesso T-SQL DELETE sintassi che useresti se elimini direttamente una riga dalla tabella.

Esempio

Ecco un rapido esempio da dimostrare.

La funzione

Ecco una rapida funzione inline con valori di tabella che seleziona i dati di base da una tabella.

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

Questa funzione seleziona tutte le righe da una tabella.

Posso anche usare questa funzione per eliminare righe da quella tabella.

Seleziona i dati con la funzione

Ecco come normalmente invocheremmo la funzione con un SELECT dichiarazione. Questo ci permette di vedere i dati attuali nella tabella sottostante.

SELECT * FROM udf_Cats_ITVF();

Risultato:

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

Quindi ci sono cinque righe.

Eliminiamo Scratchy.

Elimina una riga tramite la funzione

Ora usiamo il TVF per eliminare una riga.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Risultato:

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

Quindi ho eliminato con successo Scratchy usando la funzione inline con valori di tabella.