V SQL Server, OPENQUERY
funkce sady řádků umožňuje provést předávací dotaz na propojeném serveru.
OPENQUERY
se běžně odkazuje v FROM
klauzule dotazu, jako by to byla tabulka, ale lze na ni také odkazovat jako na cílovou tabulku INSERT
, UPDATE
nebo DELETE
prohlášení.
Tento článek představuje příklad použití OPENQUERY
k provedení UPDATE
předávací dotaz.
Příklad
Předpokládejme propojený server s názvem Homer
má tabulku v Pets
databáze s názvem Cats
s následujícími údaji.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Výsledek:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Long Tail | +---------+-----------+
A řekněme, že chceme aktualizovat jedno z kočičích jmen.
Mohli bychom to udělat pomocí UPDATE
předávací dotaz proti propojenému serveru, jako je tento.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
Výsledek:
(1 row affected)
Zkontrolujte výsledky
Nyní můžeme spustit SELECT
předávací dotaz, abyste viděli výsledky.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Výsledek:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Podle očekávání byl nyní aktualizován třetí řádek.
Jedna věc, kterou bych měl zdůraznit, je, že OPENQUERY
nepřijímá proměnné pro své argumenty.