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.