T-SQLのOPENROWSET()
関数の奇妙な属性の1つは、リモートで実行される「クエリ」内のパラメータを受け入れることができないことです。これを回避するには、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
?
制限を回避し、これを希望どおりに機能させるために、これに糖衣構文を振りかけることができるものはありますか?