En SQL Server, es posible insertar datos a través de una función con valores de tabla (TVF).
Con esto me refiero a insertar filas en las tablas subyacentes que consulta la función.
Para insertar una nueva fila a través de un TVF, simplemente use el mismo T-SQL INSERT
sintaxis que usaría si insertara datos directamente en la tabla.
Ejemplo
Aquí hay un ejemplo rápido para demostrarlo.
La función
Aquí hay una función rápida que selecciona datos básicos de una tabla.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Esta función selecciona todas las filas de una tabla.
Podría usar esta función para insertar una nueva fila en esa tabla.
Seleccionar datos con la función
Así es como normalmente invocaríamos la función con un SELECT
declaración. Esto nos permite ver los datos actuales en la tabla subyacente.
SELECT * FROM udf_Cats_ITVF();
Resultado:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Así que hay cuatro filas.
Insertar una fila a través de la función
Ahora usemos el TVF para agregar una nueva fila.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Resultado:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Así que inserté con éxito un nuevo gato usando la función de valores de tabla en línea.