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

Inserisci dati tramite una funzione con valori di tabella in SQL Server

In SQL Server è possibile inserire dati tramite una funzione con valori di tabella (TVF).

Con questo, intendo inserire righe nelle tabelle sottostanti che la funzione interroga.

Per inserire una nuova riga tramite un TVF, usa semplicemente lo stesso T-SQL INSERT sintassi che useresti se inserisci i dati direttamente nella tabella.

Esempio

Ecco un rapido esempio da dimostrare.

La funzione

Ecco una rapida funzione 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.

Potrei usare questa funzione per inserire una nuova riga in 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 |
+---------+-----------+------------+

Quindi ci sono quattro righe.

Inserisci una riga tramite la funzione

Ora usiamo il TVF per aggiungere una nuova riga.

INSERT INTO udf_Cats_ITVF() 
VALUES ('Scratchy', '1111111111');

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 ho inserito con successo un nuovo gatto usando la funzione inline con valori di tabella.