En SQL Server, es posible usar una función con valores de tabla (TVF) para eliminar datos de las tablas subyacentes que consulta TVF.
Para eliminar los datos de la tabla a través de un TVF, simplemente use el mismo T-SQL DELETE
sintaxis que usaría si eliminara una fila de la tabla directamente.
Ejemplo
Aquí hay un ejemplo rápido para demostrarlo.
La Función
Aquí hay una función rápida con valores de tabla en línea 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.
También puedo usar esta función para eliminar filas de 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 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Así que hay cinco filas.
Eliminemos Scratchy.
Eliminar una fila a través de la función
Ahora usemos el TVF para eliminar una fila.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Resultado:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Así que eliminé Scratchy con éxito usando la función de valores de tabla en línea.