Passar uma variável para uma consulta de servidor vinculado
Este artigo descreve como passar uma variável para uma consulta de servidor vinculado.
Versão original do produto: SQL Server Books Online
Número original do KB: 314520
Resumo
Ao consultar um servidor vinculado, você frequentemente executa uma consulta de passagem que usa a OPENQUERY
instrução , OPENROWSET
ou OPENDATASOURCE
. Você pode exibir os exemplos no SQL Server Books Online para ver como fazer isso usando cadeias de caracteres Transact-SQL pré-definidas, mas não há exemplos de como passar uma variável para essas funções. Este artigo fornece três exemplos de como passar uma variável para uma consulta de servidor vinculado.
Para passar uma variável para uma das funções de passagem, você deve criar uma consulta dinâmica.
Todos os dados que incluem aspas precisam de tratamento específico.
Passar valores básicos
Quando a instrução transact-SQL básica for conhecida, mas você precisar passar um ou mais valores específicos, use um código semelhante ao exemplo a seguir:
DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT @VAR = 'CA'
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)
Passar a consulta inteira
Quando você precisar passar toda a consulta Transact-SQL ou o nome do servidor vinculado (ou ambos), use um código semelhante ao seguinte exemplo:
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)
Usar o procedimento armazenado Sp_executesql
Para evitar as aspas em várias camadas, use um código semelhante ao exemplo a seguir:
DECLARE @VAR char(2)
SELECT @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR
Confira também
Para mais informações, confira os seguintes tópicos:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários