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.