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 DELETE
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 | Short Tail | +---------+------------+
E supponiamo di voler eliminare uno dei gatti dal database.
Potremmo farlo usando un DELETE
query pass-through sul server collegato, in questo modo.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
);
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 | | 3 | Short Tail | +---------+------------+
Come previsto, la seconda riga è stata eliminata e ora rimangono solo due righe.
Una cosa da notare è che OPENQUERY
non accetta variabili per i suoi argomenti.