Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wykonać zapytanie przekazujące DELETE w SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować duży plik MS SQL .sql?

  2. Zapytanie indeksujące dotyczące odbudowy serwera SQL

  3. FILE_ID() vs FILE_IDEX() w SQL Server:jaka jest różnica?

  4. Jak wybrać ostatni rekord tabeli w SQL?

  5. lista rozdzielana przecinkami jako pojedynczy ciąg, T-SQL