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 odwoływać również jako tabelę docelową INSERT
, UPDATE
lub DELETE
oświadczenie.
Ten artykuł przedstawia przykład użycia OPENQUERY
zrobić UPDATE
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 | Long Tail | +---------+-----------+
I powiedzmy, że chcemy zaktualizować imię jednego z kotów.
Możemy to zrobić za pomocą UPDATE
zapytanie przekazujące do połączonego serwera, tak jak to.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
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 | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Zgodnie z oczekiwaniami trzeci wiersz został zaktualizowany.
Jedną rzeczą, na którą powinienem zwrócić uwagę, jest to, że OPENQUERY
nie akceptuje zmiennych dla swoich argumentów.