Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguire una query pass-through UPDATE in SQL Server

In SQL Server, il OPENQUERY la funzione rowset ti consente di eseguire una query pass-through su un server collegato.

OPENQUERY è comunemente indicato nel FROM clausola di una query come se fosse una tabella, ma può anche essere referenziata come tabella di destinazione di un INSERT , UPDATE o DELETE dichiarazione.

Questo articolo presenta un esempio di utilizzo di OPENQUERY per eseguire un UPDATE query pass-through.

Esempio

Supponiamo che il server collegato chiamato Homer ha una tabella in Pets database chiamato Cats con i seguenti dati.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Risultato:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | FluffDupp |
| 2       | Scratch   |
| 3       | Long Tail |
+---------+-----------+

E supponiamo di voler aggiornare uno dei nomi del gatto.

Potremmo farlo usando un UPDATE query pass-through sul server collegato, in questo modo.

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

Risultato:

(1 row affected)

Controlla i risultati

Ora possiamo eseguire un SELECT query pass-through per vedere i risultati.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Risultato:

+---------+------------+
| CatId   | CatName    |
|---------+------------|
| 1       | FluffDupp  |
| 2       | Scratch    |
| 3       | Short Tail |
+---------+------------+

Come previsto, la terza riga è stata ora aggiornata.

Una cosa che dovrei sottolineare è che OPENQUERY non accetta variabili per i suoi argomenti.