总结:在 ADF 管道中,使用查找来选择所有数据并将每一行一次传递给 ForEach 活动。在 ForEach 活动中,首先我有复制数据活动,我从查找中读取值并作为源和接收器传递并加载数据。接下来我要运行一个存储过程。重复此过程,直到完成所有查找。
SELECT [SchemaName]
,[TableName]
,[SourceFilePath]
,[StoredProcedure_1]
FROM [dbo].[ADF_ControlTable]
@item().SchemaName
@item().TableName
@item().SourceFilePath
@item().StoredProcedure_1
使用具有
@item()
值的源和接收器复制数据活动,我正在将数据从文件加载到表(这按预期工作)。
下一步我想在 foreach 中执行脚本活动并执行
@item().StoredProcedure_1
这显示用户配置问题:
必须声明标量变量“@item”
当您在普通 SQL 脚本中给出 ADF 动态表达式时,就会出现上述错误。如果
@item().StoredProcedure_1
是存储过程名称,当您给出如下表达式时,将会出现上述错误。
上面的框将执行 SQL 查询。如果要在查询中给出 ADF 表达式,则需要使用字符串连接或 concat() 函数。
使用字符串连接
@{<ADF_expression>}
:
提出如下查询:
exec @{item().StoredProcedure_1}
这将根据您的要求执行脚本活动。
或者您也可以使用
concat()
功能。连接 SQL 查询和上面的表达式,如下所示。在查询中打开动态表达式并给出该表达式。
@concat('exec ',item().StoredProcedure_1)