我正在使用 SQL Server v18.10,并尝试为动态日期创建一个变量并将其传递到链接服务器
OPENQUERY
。我能够在 SQL 中显示日期结果,但不能在链接服务器中显示。
我按照 SQL Server 文档中的方式进行操作,但是我得到的日期结果显示为 null,我希望它应该返回日期。
这是我的查询和结果:
DECLARE @var1 DATE
SELECT @var1 = '2023-01-01'
SELECT * from OPENQUERY(MYSQL ,
'
SELECT @var1
'
)
您无法将参数传递给
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