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 proveďte DELETE 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 | Short Tail | +---------+------------+
A řekněme, že chceme odstranit jednu z koček z databáze.
Mohli bychom to udělat pomocí DELETE předávací dotaz proti propojenému serveru, jako je tento.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
); 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 | | 3 | Short Tail | +---------+------------+
Podle očekávání byl odstraněn druhý řádek a nyní zbývají pouze dva řádky.
Jedna věc, kterou je třeba poznamenat, je, že OPENQUERY nepřijímá proměnné pro své argumenty.