通过Excel单元向OPENQUERY SQL添加参数

我有一个SQL查询在Excel中工作,但它使用下面的代码。

SET QUOTED_IDENTIFIER OFF SELECT * FROM OPENQUERY ( INSQL, "SELECT DateTime = convert(nvarchar, DateTime, 21), [TagName] FROM WideHistory WHERE wwRetrievalMode = 'Cyclic' AND wwCycleCount = 100 AND wwVersion = 'Latest' AND DateTime >= '20161122 08:33:00.000' AND DateTime <= '20161122 08:38:00.000'" ) 

我正在尝试通过Excel单元格添加DateTime 。 通过论坛阅读,它提到参数化OPENQUERY并不像Excel中正常的SQL查询那样简单。

有什么我可以做的链接Excel中的单元格,我可以改变这些参数?

文档: OPENQUERY(Transact-SQL) :

语法OPENQUERY(linked_server,'query')。 OPENQUERY不接受variables的参数。

'query' – 是查询string

创build查询string并执行

 DECLARE @dt_start DATETIME = '2016-11-22 08:33:00.000'; DECLARE @dt_end DATETIME = '2016-11-22 08:38:00.000'; DECLARE @query VARCHAR(MAX); DECLARE @openquery VARCHAR(MAX); SELECT @query = 'SELECT DateTime = convert(nvarchar, DateTime, 21), [TagName] FROM WideHistory WHERE wwRetrievalMode = ''Cyclic'' AND wwCycleCount = 100 AND wwVersion = ''Latest'' AND DateTime >= ''' + CONVERT(VARCHAR(23), @dt_start, 121) + ''' AND DateTime <= ''' + CONVERT(VARCHAR(23), @dt_end, 121) + ''''; --SELECT @query; SELECT @openquery = 'SELECT * FROM OPENQUERY (INSQL, ''' + REPLACE(@query, '''', '''''') + ''')'; --SELECT @openquery; EXEC (@openquery); 

尝试这个。

 EXECUTE sp_executesql @openquery