In SQL Server is het mogelijk om een tabelwaardefunctie (TVF) te gebruiken om gegevens te verwijderen uit de onderliggende tabellen die door de TVF worden opgevraagd.
Om tabelgegevens via een TVF te verwijderen, gebruikt u gewoon dezelfde T-SQL DELETE
syntaxis die u zou gebruiken als u een rij rechtstreeks uit de tabel verwijdert.
Voorbeeld
Hier is een snel voorbeeld om te demonstreren.
De Functie
Hier is een snelle inline tabelwaardefunctie die basisgegevens uit een tabel selecteert.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Deze functie selecteert alle rijen uit een tabel.
Ik kan deze functie ook gebruiken om rijen uit die tabel te verwijderen.
Selecteer gegevens met de functie
Hier is hoe we normaal gesproken de functie aanroepen met een SELECT
uitspraak. Dit stelt ons in staat om de huidige gegevens in de onderliggende tabel te zien.
SELECT * FROM udf_Cats_ITVF();
Resultaat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Er zijn dus vijf rijen.
Laten we Scratchy verwijderen.
Een rij verwijderen via de functie
Laten we nu de TVF gebruiken om een rij te verwijderen.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Resultaat:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Dus ik heb Scratchy met succes verwijderd met behulp van de inline-tabelwaardefunctie.