使用 Execute SQL 任务的参数映射

Parameter Mapping using an Execute SQL Task

我正在尝试创建一个临时 table 并将数据插入 foreach 循环容器内的执行 SQL 任务中的临时 table。

这是 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 子句中有一个参数,但每当我尝试添加它时,我都会收到此错误。

"Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."。可能失败原因:查询有问题,"ResultSet" 属性设置不正确,参数设置不正确,或者连接没有正确建立。"

当我对 Where 子句中的值进行硬编码时,插入工作完美。

我的参数映射哪里做错了?

这是我的参数映射设置

而且我无法使用存储过程。

用整个 SQL 脚本填充一个变量,并在执行 SQL 任务中使用该变量作为 SQLSourceType。

只需转到 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]  +   "'"