Dans SQL Server, il est possible d'insérer des données via une fonction table (TVF).
J'entends par là insérer des lignes dans les tables sous-jacentes que la fonction interroge.
Pour insérer une nouvelle ligne via un TVF, il suffit d'utiliser le même INSERT
T-SQL syntaxe que vous utiliseriez si vous insériez des données directement dans le tableau.
Exemple
Voici un exemple rapide à démontrer.
La fonction
Voici une fonction rapide qui sélectionne les données de base d'un tableau.
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 pourrais utiliser cette fonction pour insérer une nouvelle ligne dans ce tableau.
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 | +---------+-----------+------------+
Il y a donc quatre lignes.
Insérer une ligne via la fonction
Utilisons maintenant le TVF pour ajouter une nouvelle ligne.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); 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 | +---------+-----------+------------+
J'ai donc réussi à insérer un nouveau chat à l'aide de la fonction de table en ligne.