我需要如何将ID和名称传递到变量包中并执行过程



我需要执行两个过程例如:

Exec usp_Employee @name = 'Employee'
Exec usp_Department @ID = 2,@name = 'Department'

我有一张主表,里面有像这样的记录

ID name
1  Employee
2  Department
3  Class

我如何将此表数据传递到变量中作为参数发送到程序

员工姓名应作为参数进入usp_Employee Procedure,ID和部门名称应作为参数进入usp_Department Procedure

我已经创建了执行SQL TASK,我已经放置了这个过程

Exec usp_Employee @name = ?
Exec usp_Department @ID = ?,@name = ?

并使用了For循环容器,但它没有按预期执行。

如何将主表数据循环到变量中,并将其作为参数传递给这些过程。

建议我

在Foreach循环之前,您需要执行SQL任务。在第一个执行SQL中,编写一个查询,从表中选择您感兴趣的记录

SELECT 
ID,
Name
FROM SomeTable;

在"常规"选项卡上,将"结果集"设置为"完整结果集"。在"结果集"选项卡上,将结果指定给对象变量。

在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;

最新更新