Я передаю параметры на связанный сервер следующим образом:
DECLARE
@QRY01 VARCHAR(8000)
,@WIP_PRM VARCHAR(12)
--START SEARCHING WIP_AUTO_KEY IN COST_AUDIT_LOG FROM LAST RECORD INCLUDED IN tbl_WIPLOG1
SET @WIP_PRM = CONVERT(VARCHAR(12),(SELECT MAX(WIP_AUTO_KEY) FROM tbl_WIPLOG1))
SET @QRY01 = '
SELECT *
FROM
OPENQUERY(LINKED_SERVER,
''SELECT DISTINCT
QCTL.WIP_AUDIT_LOG.WIP_AUTO_KEY
,QCTL.WIP_AUDIT_LOG.WOO_AUTO_KEY
FROM QCTL.WIP_AUDIT_LOG
WHERE
QCTL.WIP_AUDIT_LOG.WIP_AUTO_KEY > '+CHAR(39) + CHAR(39)+CAST(@WIP_PRM AS nvarchar(500))+CHAR(39) + CHAR(39)+N''')
EXEC(@QRY01)
Похоже, что форматирование параметра внутри оператора OPENQUERY является неправильным или требует, чтобы перед ним было ключевое слово, чтобы обозначить его как текст, поскольку весь оператор заключен в квадратные скобки. Если я введу значение параметра, как показано ниже, запрос будет работать, но не в указанном выше формате.
SET @QRY01 = '
SELECT *
FROM
OPENQUERY(LINKED_SERVER,
''SELECT DISTINCT
QCTL.WIP_AUDIT_LOG.WIP_AUTO_KEY
,QCTL.WIP_AUDIT_LOG.WOO_AUTO_KEY
FROM QCTL.WIP_AUDIT_LOG
WHERE
QCTL.WIP_AUDIT_LOG.WIP_AUTO_KEY > ''''1432697'''' '
EXEC(@QRY01)
Как я могу заставить запрос принять параметр в правильном формате?