sql >> Base de Datos >  >> RDS >> Sqlserver

Insertar datos a través de una función con valores de tabla en SQL Server

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.