将动态日期变量传递到MySQL链接服务器OPENQUERY

问题描述 投票:0回答:1

我正在使用 SQL Server v18.10,并尝试为动态日期创建一个变量并将其传递到链接服务器

OPENQUERY
。我能够在 SQL 中显示日期结果,但不能在链接服务器中显示。

我按照 SQL Server 文档中的方式进行操作,但是我得到的日期结果显示为 null,我希望它应该返回日期。

文档链接如下: https://learn.microsoft.com/en-US/troubleshoot/sql/database-engine/linked-servers/pass-variable-linked-server-query

这是我的查询和结果:

DECLARE @var1 DATE
SELECT @var1 = '2023-01-01'

SELECT * from OPENQUERY(MYSQL ,
'

SELECT @var1
'
)
sql-server t-sql variable-assignment linked-server
1个回答
0
投票

您无法将参数传递给

OPENQUERY
命令。

关于您最后评论中的疑问

DECLARE @query1 VARCHAR(MAX), @date_1 DATETIME 
SELECT @date_1= '2024-01-01' 
SELECT @query1= ' SELECT * FROM OPENQUERY (MYSQL, ''SELECT @date_1, TB.* FROM Tables TB '') ' 
EXEC(@query1);

貌似

@date_1
和远程查询完全没有关系

如果是这种情况,您可以在外部查询中使用 return @date_1 并使用

sp_executesql
传入参数

DECLARE @query1 NVARCHAR(MAX), 
        @date_1 DATETIME 

SELECT  @query1 = ' SELECT @date_1, * FROM OPENQUERY (MYSQL, ''SELECT TB.* FROM Tables TB '') ' 

exec    sp_executesql @query1, N'@date_1 datetime', @date_1

或使用 4 部分名称从链接服务器查询

SELECT  @date_1, TB.*
FROM    [MYSQL].[DB NAME].[SCHEMA].Tables TB
© www.soinside.com 2019 - 2024. All rights reserved.