Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como fazer uma consulta de passagem INSERT no SQL Server


No SQL Server, você pode usar OPENQUERY para executar uma consulta de passagem em um servidor vinculado.

OPENQUERY é comumente referenciado no FROM cláusula de uma consulta como se fosse uma tabela, mas também pode ser referenciada como a tabela de destino de um INSERT , UPDATE , ou DELETE demonstração.

Este artigo apresenta um exemplo de uso de OPENQUERY para fazer um INSERT consulta de passagem.

Exemplo


Digamos que criamos uma tabela no servidor vinculado chamada Cats , em um banco de dados chamado Pets .

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

E agora queremos inserir dados usando um INSERT consulta de passagem.

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

Nesse caso, o servidor vinculado é chamado de Homer , e estamos inserindo três valores no Pets.dbo.Cats tabela.

Verifique os resultados


Agora podemos executar um SELECT consulta de passagem para ver os resultados.
SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

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

Observe que OPENQUERY não aceita variáveis ​​para seus argumentos.