gpt4 book ai didi

sql - 在 OPENQUERY 中包含参数

转载 作者:行者123 更新时间:2023-12-03 05:13:56 24 4
gpt4 key购买 nike

如何在sql openquery中使用参数,例如:

SELECT * FROM OPENQUERY([NameOfLinkedSERVER], 'SELECT * FROM TABLENAME
where field1=@someParameter') T1 INNER JOIN MYSQLSERVER.DATABASE.DBO.TABLENAME
T2 ON T1.PK = T2.PK

最佳答案

来自OPENQUERY文档指出:

OPENQUERY does not accept variables for its arguments.

查看此article寻求解决方法。

更新:

根据建议,我添加了下面文章中的建议。

传递基本值

当基本 Transact-SQL 语句已知,但您必须传入一个或多个特定值时,请使用类似于以下示例的代码:

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)

传递整个查询

当您必须传递整个 Transact-SQL 查询或链接服务器的名称(或两者)时,请使用类似于以下示例的代码:

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)

使用 Sp_executesql 存储过程

为避免多层引号,请使用类似于以下示例的代码:

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

关于sql - 在 OPENQUERY 中包含参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com