Сопоставление параметров с помощью задачи «Выполнение SQL»

Я пытаюсь создать временную таблицу и вставить данные в временную таблицу в рамках задачи «Выполнение SQL» внутри контейнера цикла foreach.

Вот задачи sql

IF OBJECT_ID('TEMPDB.DBO.#TEMP') IS NOT NULL
DROP TABLE #TEMP
GO

CREATE TABLE #TEMP 
      ( ... );

INSERT INTO #TEMP
      SELECT (...)
  FROM table t1 INNER JOIN table2 t2
  ON t1.id = t2.table1_id
WHERE t1.value = ?

Я хочу иметь параметр в предложении WHERE, но всякий раз, когда я пытаюсь добавить его, я получаю эту ошибку.

«Многоэтапная операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Никаких действий выполнено не было». Возможные причины сбоя: Проблемы с запросом, неправильно задано свойство "ResultSet", неправильно заданы параметры или неправильно установлено соединение."

Когда я жестко кодирую значение в предложении Where, вставка работает отлично.

Что я делаю неправильно при сопоставлении параметров?

Вот мои настройки сопоставления параметров введите здесь описание изображения

Кроме того, я не могу использовать хранимую процедуру.


person Deric Plummer    schedule 09.06.2017    source источник


Ответы (2)


Просто перейдите на вкладку Expressions, как показано на предоставленном снимке экрана, и напишите следующее выражение в свойство SqlStatmentSource.

"IF OBJECT_ID('TEMPDB.DBO.#TEMP') IS NOT NULL
DROP TABLE #TEMP
GO

CREATE TABLE #TEMP 
      ( ... );

INSERT INTO #TEMP
      SELECT (...)
  FROM table t1 INNER JOIN table2 t2
  ON t1.id = t2.table1_id
WHERE t1.value = '"  +  @[User::Where_Variable]  +   "'"

введите здесь описание изображения

person Hadi    schedule 11.06.2017
comment
Спасибо! Это очень помогло, и я заработал. В итоге мне пришлось переместить оператор drop в отдельную задачу sql. - person Deric Plummer; 13.06.2017
comment
@DericPlummer рад помочь - person Hadi; 13.06.2017

Заполните переменную всем скриптом SQL и используйте эту переменную в качестве SQLSourceType в задаче «Выполнение SQL».

person Tab Alleman    schedule 09.06.2017