sql >> Databáze >  >> RDS >> Sqlserver

Jak provést UPDATE Pass-Through Query v SQL Server

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 k provedení UPDATE 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       | Long Tail |
+---------+-----------+

A řekněme, že chceme aktualizovat jedno z kočičích jmen.

Mohli bychom to udělat pomocí UPDATE předávací dotaz proti propojenému serveru, jako je tento.

UPDATE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
    )
SET CatName = 'Short Tail';

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  |
| 2       | Scratch    |
| 3       | Short Tail |
+---------+------------+

Podle očekávání byl nyní aktualizován třetí řádek.

Jedna věc, kterou bych měl zdůraznit, je, že OPENQUERY nepřijímá proměnné pro své argumenty.


  1. Kompletní průvodce opravou chyby SQL Database 5243

  2. Oracle:Vypočítejte časový rozdíl v HH:MM:SS mezi 2 daty

  3. PostgreSQL zpracovává názvy ve Windows

  4. První veřejný náhled na SQL Server 2019:CTP 2.0