sql - 我如何需要将 ID 和名称传递给变量并执行过程

标签 sql sql-server t-sql ssis

我需要执行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/

相关文章:

mysql - SQL 少于 7 天

PHP SQL ON DUPLICATE KEY 没有影响

sql - 从 SQL Server 问题查询 LDAP

c# - 存储过程和 C# SqlDataReader 返回的行数少于预期

sql-server - 输出使用动态 PL/SQL 执行的 SELECT 的结果

sql - 在文本中进行单词搜索以查找包含最匹配变体的文本

mysql - 如何创建超过 8 个表和特殊条件的多选

sql - 数据库设计 : should nested objects have their own table?

c# - 无法将子字符串发送到数据库

c# - 批量插入的问题