In SQL Server, de OPENQUERY
rowset-functie stelt u in staat om een pass-through-query uit te voeren op een gekoppelde server.
OPENQUERY
wordt vaak verwezen in de FROM
clausule van een query alsof het een tabel is, maar er kan ook naar worden verwezen als de doeltabel van een INSERT
, UPDATE
, of DELETE
verklaring.
Dit artikel geeft een voorbeeld van het gebruik van OPENQUERY
om een DELETE
. te doen pass-through-query.
Voorbeeld
Stel dat de gekoppelde server Homer
. heet heeft een tabel in de Pets
database genaamd Cats
met de volgende gegevens.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultaat:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
En laten we zeggen dat we een van de katten uit de database willen verwijderen.
We zouden dat kunnen doen met een DELETE
pass-through-query tegen de gekoppelde server, zoals deze.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
);
Resultaat:
(1 row affected)
Controleer de resultaten
We kunnen nu een SELECT
. uitvoeren pass-through-query om de resultaten te zien.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultaat:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 3 | Short Tail | +---------+------------+
Zoals verwacht is de tweede rij verwijderd en zijn er nu nog maar twee rijen over.
Een ding om op te merken is dat OPENQUERY
accepteert geen variabelen voor zijn argumenten.