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.