我需要执行2个程序 例如:
Exec usp_Employee @name = 'Employee'
Exec usp_Department @ID = 2,@name = 'Department'
我有一个主表,其中有这样的记录
ID name
1 Employee
2 Department
3 Class
如何将此表数据传递到作为参数发送到过程的变量
员工姓名应作为参数传递到 usp_Employee 过程,ID 和部门名称应作为参数传递到 usp_Department 过程
我已经创建了执行 SQL 任务,并放置了此过程
Exec usp_Employee @name = ?
Exec usp_Department @ID = ?,@name = ?
并使用了 For 循环容器,但它没有按预期执行。
如何将主表数据循环到变量中并将其作为参数传递给这些过程。
建议我
最佳答案
在 Foreach 循环之前,您需要执行 SQL 任务。在第一个执行 SQL 中,编写一个查询以从表中选择您感兴趣的记录。
SELECT
ID,
Name
FROM SomeTable;
在“常规”选项卡上,将“结果集”设置为“完整结果集”。在结果集选项卡上,将结果分配给对象变量。
在 Foreach 循环中,循环遍历“集合”选项卡上的“对象”变量。在“集合”选项卡上,将枚举器设置为“Foreach ADO 枚举器”。然后,您的对象变量应该可以在“ADO 对象源变量”下拉列表中进行选择。在“变量映射”选项卡上,创建两个新变量,例如 CurrentInt 和 CurrentString(可能是 INT32 和 String),并将当前循环迭代中的对象变量值分配给这些变量。这两个变量将被传递给循环容器内的任务。
在 Foreach 容器内,使用执行 SQL 任务。在“参数映射”选项卡上,选择循环容器设置的两个变量。在任务内添加局部变量,将传递的参数分配给这些变量,然后在任务内使用局部变量。因此,在您的示例中,类似这样的操作应该可以解决问题:
DECLARE
@IdFromTable INT = ?,
@NameFromTable VARCHAR(50) = ?;
EXEC usp_Employee
@name = @NameFromTable;
EXEC usp_Department
@ID = @IdFromTable,
@name = @NameFromTable;
关于sql - 我如何需要将 ID 和名称传递给变量并执行过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53377402/