我需要执行2个程序 例如:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>thirdparty</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
...
</dependencies>
我有一个主表,其中有这样的记录
Exec usp_Employee @name = 'Employee'
Exec usp_Department @ID = 2,@name = 'Department'
如何将此表数据传递给作为参数发送到过程的变量
员工名称应作为参数进入usp_Employee Procedure,ID和部门名称应作为参数进入usp_Department Procedure
我已经创建了执行SQL任务,因为我已经放置了此过程
ID name
1 Employee
2 Department
3 Class
并用于For循环容器,但未按预期执行。
如何将主表数据循环到变量中并将其作为参数传递给那些过程。
建议我
答案 0 :(得分:2)
在Foreach循环之前,您需要执行Execute SQL任务。在第一个执行SQL中,编写查询以从您感兴趣的表中选择记录。
SELECT
ID,
Name
FROM SomeTable;
在“常规”选项卡上,将ResultSet设置为“ Full result set”。在结果集选项卡上,将结果分配给对象变量。
在您的Foreach循环中,在“集合”选项卡上循环Object变量。在集合选项卡上,将枚举器设置为“ Foreach ADO枚举器”。然后,您的对象变量应该可以在“ ADO对象源变量”下拉列表中进行选择。在“变量映射”选项卡上,创建两个新变量,例如CurrentInt和CurrentString(可能是INT32和String),然后将当前循环迭代中的Object变量值分配给这些变量。这两个变量将传递给循环容器内的任务。
在Foreach容器中,使用“执行SQL”任务。在“参数映射”选项卡上,拾取“循环”容器设置的两个变量。在任务内添加局部变量,将传递的参数分配给这些变量,然后在任务内使用局部变量。因此,在您的示例中,这样的事情应该可以解决问题:
DECLARE
@IdFromTable INT = ?,
@NameFromTable VARCHAR(50) = ?;
EXEC usp_Employee
@name = @NameFromTable;
EXEC usp_Department
@ID = @IdFromTable,
@name = @NameFromTable;