Attached is the patch for review. QueryExecutor is unchanged now.
The only iffy bit is where I check for the in parameter being bound to void type. It could be done in checkAllParametersSet
I'd like to commit this shortly.