T-SQLOPENROWSET()
函数的一个奇怪属性是它不能接受远程执行的“查询”中的参数。为了解决这个问题,我猜你必须创建一个包含OPENROWSET
调用和参数化查询的长字符串。
鉴于这个限制,我试图让这段代码工作:
Declare @DataId int
Declare @RecordType varchar(50)
Declare @Filter varchar(50)
-- ...
SELECT TOP 1
@RecordType = recordType,
@DataId = DataId
FROM OPENROWSET('SQLNCLI',
'Server=MyServer;Trusted_Connection=yes;',
'SELECT recordType, DataId FROM MyDb..data_lookup
WHERE Filter = ''' + @Filter+'''')
这会引发错误
'+' 附近的语法不正确
现在,鉴于对 OPENROWSET 的限制,这是有道理的。但是如果我将它转换为 SQL 字符串,我会不会失去设置@RecordType
和@DataId
查询结果的能力?
有没有什么语法糖可以撒在上面来绕过限制并使这项工作按我想要的方式工作?