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

Jak wykonać zapytanie przekazujące INSERT w programie SQL Server

W SQL Server możesz użyć OPENQUERY aby wykonać zapytanie przekazujące 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ć INSERT zapytanie przekazujące.

Przykład

Załóżmy, że stworzyliśmy tabelę na połączonym serwerze o nazwie Cats , w bazie danych o nazwie Pets .

Coś takiego:

EXEC ('
    USE  [Pets];
    CREATE TABLE [dbo].[Cats](
        [CatId] [int] IDENTITY(1,1) NOT NULL,
        [CatName] [varchar](60) NULL
    ) ON [PRIMARY];
') AT Homer;

A teraz chcemy wstawić dane za pomocą INSERT zapytanie przekazujące.

Możemy to zrobić tak:

INSERT OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats'
    )
VALUES 
    ( 'FluffDupp' ),
    ( 'Scratch' ),
    ( 'Long Tail' );

W tym przypadku połączony serwer nazywa się Homer i wstawiamy trzy wartości do Pets.dbo.Cats tabela.

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

Zwróć uwagę, ż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. Spłaszczanie przecinających się przedziałów czasowych

  2. Wprowadzenie do wbudowanych funkcji z wartościami tabelarycznymi (ITVF) w SQL Server

  3. Jak usunąć z wielu tabel za pomocą INNER JOIN na serwerze SQL?

  4. Jak działa funkcja RIGHT() w SQL Server (T-SQL)

  5. Zamień ciąg na inny ciąg w SQL Server (T-SQL)