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.