The following structure would work:
Create an object variable. (recordset_object)
Create an string variable. (record_string)
Create an "Execute SQL Command" in the control flow. The command should return the record set that you want to loop through.
In the "Execute SQL Command", in the General tab set the Result Set = Full result set.
In the "Execute SQL Command", in the Result Set tab set the Result Name = 0 and Variable Name = (recordset_object).
Create a "Foreach Loop Container" and create a precedence constraint between the "Execute SQL Command" and the "Foreach Loop Container".
In the "Foreach Loop Container", in the Collection tab set Enumerator = Foreach ADO Enumerator.
In the "Foreach Loop Container", in the Collection tab set the ADO object source variable = User::recordset_object.
In the "Foreach Loop Container", in the Collection tab set the Enumeration mode = Rows in the first table.
In the "Foreach Loop Container", in the Variable Mappings tab set teh Variable = User::record_string and the Index = 0.
In the "Foreach Loop Container" in the design surface of the Control Flow, add an "Execute SQL Command".
For the child "Execute SQL Command", you can (13) set the SQLStatement to either use a variable that generates the code you want to execute, or (14) map in a parameter, or (15) make the record_string a SQL command that is executed by the code.
If you use a variable, then it could be something like User::sql_code_string and its value could be something like "EXEC schema.some_stored_procedure '" + @[record_string] + "';". You would then set the SQLSourceType in the General tab of the child "Execute SQL Command" = Variable and set the SQLStatement to User::sql_code_string.
If you use a parameter, in the child "Execute SQL Command" in the Parameter Mapping
tab set Variable Name = User::record_string, Direction = Input, Data Type = VARCHAR, Parameter Name = 0, Parameter Size = -1. In the General tab of the child "Execute SQL Command", set the SQLStatement to "EXEC schema.some_stored_procedure ?".
Similar to 13, but instead of creating a separate variable, you can execute User::record_string. This could work if the content of record_string that was returned by your data set is the query you want to execute.
I generally prefer this approach over @Ed's solution you can include additional steps for each record. For instance, I often add in additional objects in my Control Flow like Script Tasks, Data Flows, and Execute SQL Commands. It's a more flexible, easy to understand approach from my perspective, but @Ed's solution definately meets the criteria of your question.
Good luck and let me know if you need clarification on the instructions.