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.