SQL Server: проблема для параметра concat в запросе с двойным открытым запросом - PullRequest
1 голос
/ 09 июля 2019

Я редактирую запрос, который содержит двойной openquery.Но в этом запросе мне нужно добавить параметр.Поскольку я никогда не работал на SQL Server, я не знаю, как добавить этот параметр в свой запрос.

Запрос выглядит так:

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],''
        SELECT *
        FROM table
        WHERE field = ''''PARAM'''''
    )'
)

Сначала я попытался:

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],''
        SELECT *
        FROM table
        WHERE field = ''''' + @PARAM + '''''
    )'
)

Но это не работает.

Затем я попытался отделить запрос следующим образом:

SET @query = 'SELECT *
FROM table
WHERE field = ' + @PARAM + ')'

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],'''+ @VAR +''')')

Но он также не работает.

Возвращенные ошибки касаются синтаксиса, например:

Unexpected "+", expected ")"

Еще одна попытка, похожая на предыдущую:

SET @query1 = 'SELECT * FROM openquery([2NDCONNECTOR],' + @query2 + ')' 

SET @query2 = 'SELECT * from BPCS61F.ITH WHERE field = ' + @PARAM + ')'

SELECT * FROM openquery([1STCONNECTOR], @query1)

Здесь ошибка в третьем запросе и произнесите:

Syntax error close of "@query1". Expected STRING, or TEXT_LEX

@query1 и @query2 оба varchar(max)

Извините, если синтаксис не соответствует соглашениям языка сервера SQL, я изучаю.

Спасибо, Сол

...