Dans SQL Server, il est possible d'utiliser une fonction table (TVF) pour supprimer des données des tables sous-jacentes que la TVF interroge.
Pour supprimer des données de table via un TVF, il suffit d'utiliser le même DELETE
T-SQL syntaxe que vous utiliseriez si vous supprimiez directement une ligne du tableau.
Exemple
Voici un exemple rapide à démontrer.
La fonction
Voici une fonction table en ligne rapide qui sélectionne les données de base d'une table.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Cette fonction sélectionne toutes les lignes d'une table.
Je peux également utiliser cette fonction pour supprimer des lignes de cette table.
Sélectionnez les données avec la fonction
Voici comment nous invoquerions normalement la fonction avec un SELECT
déclaration. Cela nous permet de voir les données actuelles dans la table sous-jacente.
SELECT * FROM udf_Cats_ITVF();
Résultat :
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Il y a donc cinq rangées.
Supprimons Scratchy.
Supprimer une ligne via la fonction
Utilisons maintenant le TVF pour supprimer une ligne.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Résultat :
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
J'ai donc réussi à supprimer Scratchy à l'aide de la fonction de table en ligne.