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

Como fazer uma consulta de passagem UPDATE no SQL Server


No SQL Server, o OPENQUERY A função de conjunto de linhas permite que você execute 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 UPDATE consulta de passagem.

Exemplo


Suponha que o servidor vinculado chamado Homer tem uma tabela no Pets banco de dados chamado Cats com os seguintes dados.
SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

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

E digamos que queremos atualizar um dos nomes do gato.

Podemos fazer isso usando um UPDATE consulta de passagem no servidor vinculado, assim.
UPDATE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
    )
SET CatName = 'Short Tail';

Resultado:
(1 row affected)

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       | Short Tail |
+---------+------------+

Como esperado, a terceira linha foi atualizada.

Uma coisa que devo salientar é que OPENQUERY não aceita variáveis ​​para seus argumentos.