Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Insérer des données via une fonction table dans SQL Server

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.