admin

使用执行SQL任务进行参数映射

sql

我正在尝试创建一个临时表,并将数据插入到foreach循环容器内的Execute SQL Task中的临时表中。

这是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子句中的值进行硬编码时,插入程序会完美工作。

我在参数映射上做错了什么?

这是我的参数映射设置
在此处输入图片说明

另外,我无法使用存储过程。


阅读 187

收藏
2021-06-07

共1个答案

admin

只需转到 提供*Expressions的屏幕快照中所示的Tab,然后将以下表达式写到property
*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]  +   "'"

在此处输入图片说明

2021-06-07