W programie SQL Server można użyć funkcji z wartościami przechowywanymi w tabeli (TVF) do usunięcia danych z tabel źródłowych, do których wysyła zapytania TVF.
Aby usunąć dane z tabeli za pomocą TVF, po prostu użyj tego samego T-SQL DELETE
składnia, której użyjesz, usuwając wiersz bezpośrednio z tabeli.
Przykład
Oto krótki przykład do zademonstrowania.
Funkcja
Oto szybka wbudowana funkcja z wartościami tabelarycznymi, która wybiera podstawowe dane z tabeli.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Ta funkcja wybiera wszystkie wiersze z tabeli.
Mogę również użyć tej funkcji do usunięcia wierszy z tej tabeli.
Wybierz dane za pomocą funkcji
Oto jak normalnie wywołalibyśmy funkcję za pomocą SELECT
oświadczenie. Dzięki temu możemy zobaczyć aktualne dane w tabeli bazowej.
SELECT * FROM udf_Cats_ITVF();
Wynik:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Więc jest pięć rzędów.
Usuńmy Scratchy.
Usuń wiersz za pomocą funkcji
Teraz użyjmy TVF, aby usunąć wiersz.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Wynik:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Więc pomyślnie usunąłem Scratchy za pomocą wbudowanej funkcji z wartościami w tabeli.