Could it be that the names of the parameters match the names of database fields? In that case you created local variables that hide the global variables for the database fields. When you chain, the global fields are updated, but not the local variables.
during debug and after the chain did you saw the data ?
Where is data missing ? in the procedureitself or in the returned value ?
Can you send the prototype and a piece of your code please ?