Я пытаюсь выполнить хранимую процедуру, которая требует, чтобы переменные передавались ей. Один статический, другой динамический.
DECLARE @Filt DATETIME
SET @Filt = (SELECT DISTINCT MAX(Date) FROM Data.db.Staging)
SELECT * INTO #tempData FROM OPENROWSET('SQLNCLI', 'Server=ISR14 \MSSQL2012;Trusted_Connection=yes;', 'EXEC GetData.db.Staging @Mode = ''Date'' @Filt ')
но это не работает, вернул ошибку «Сообщение 8180, уровень 16, состояние 1, операторы строки 1 не могут быть подготовлены. Сообщение 102, уровень 15, состояние 1, строка 1 Неверный синтаксис рядом с '@Filt' ."
Я предполагаю, что это потому, что Filt является динамическим оператором. Итак, я попробовал это
DECLARE @FilterData DATETIME
DECLARE @sql VARCHAR(200)
SET @Filt = (SELECT DISTINCT MAX(AsOfDate) FROM Data.db.Staging)
SET @sql = 'EXEC GetData.db.Staging @Mode = ''Date'' @Filt = ' + @Filt
SELECT * INTO #tempData FROM OPENROWSET('SQLNCLI', 'Server=ISR14\MSSQL2012;Trusted_Connection=yes;',
@sql)
Но я получаю сообщение обратно
«Сообщение 102, уровень 15, состояние 1, строка 24. Неверный синтаксис рядом с '@sql'».
Кажется, что OPENROWSET может принимать только строки. Но я хочу передать переменную, которая является динамической.