W SQL Server, OPENQUERY funkcja zestawu wierszy umożliwia wykonanie zapytania przekazującego na połączonym serwerze.
OPENQUERY jest często przywoływany w FROM klauzula zapytania tak, jakby była tabelą, ale można się do niej również odwoływać jako tabelę docelową INSERT , UPDATE lub DELETE oświadczenie.
Ten artykuł przedstawia przykład użycia OPENQUERY zrobić DELETE zapytanie przekazujące.
Przykład
Załóżmy, że połączony serwer o nazwie Homer ma tabelę w Pets baza danych o nazwie Cats z następującymi danymi.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); Wynik:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
I powiedzmy, że chcemy usunąć jednego z kotów z bazy danych.
Możemy to zrobić za pomocą DELETE zapytanie przekazujące do połączonego serwera, tak jak to.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
); Wynik:
(1 row affected)
Sprawdź wyniki
Możemy teraz uruchomić SELECT zapytanie przekazujące, aby zobaczyć wyniki.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); Wynik:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 3 | Short Tail | +---------+------------+
Zgodnie z oczekiwaniami drugi wiersz został usunięty i pozostały tylko dwa wiersze.
Należy zauważyć, że OPENQUERY nie akceptuje zmiennych dla swoich argumentów.