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

Sådan laver du en DELETE Pass-Through-forespørgsel i SQL Server

I SQL Server er OPENQUERY rowset-funktionen giver dig mulighed for at udføre en pass-through-forespørgsel på en forbundet server.

OPENQUERY refereres almindeligvis til i FROM klausul af en forespørgsel, som om den var en tabel, men den kan også refereres til som måltabellen for en INSERT , UPDATE eller DELETE erklæring.

Denne artikel præsenterer et eksempel på brug af OPENQUERY for at udføre en DELETE pass-through-forespørgsel.

Eksempel

Antag, at den linkede server kaldet Homer har en tabel i Pets database kaldet Cats med følgende data.

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

Resultat:

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

Og lad os sige, at vi vil slette en af ​​kattene fra databasen.

Vi kunne gøre det ved at bruge en DELETE pass-through-forespørgsel mod den linkede server, som denne.

DELETE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
    );

Resultat:

(1 row affected)

Tjek resultaterne

Vi kan nu køre en SELECT pass-through-forespørgsel for at se resultaterne.

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

Resultat:

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

Som forventet blev den anden række slettet, og der er nu kun to rækker tilbage.

En ting at bemærke er, at OPENQUERY accepterer ikke variabler for sine argumenter.


  1. ORA-00900:ugyldig SQL-sætning - når en procedure køres i oracle 10g

  2. MySQL EXP() Funktion – Returner e hævet til x-potensen

  3. Er der en måde at køre MySQL in-memory for JUnit test cases?

  4. Hvad er MySQL:En oversigt