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 UPDATE
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 | Long Tail | +---------+-----------+
En laten we zeggen dat we een van de namen van de kat willen bijwerken.
We zouden dat kunnen doen met een UPDATE
pass-through-query tegen de gekoppelde server, zoals deze.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
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 | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Zoals verwacht is de derde rij nu bijgewerkt.
Een ding waar ik op moet wijzen is dat OPENQUERY
accepteert geen variabelen voor zijn argumenten.