In SqlServer and SqlAnywhere there is a provider specific CommandBuilder which call fully populate a Command with all the parameters including SqlDbType/SADbType, Size, Scale, Precision, Direction and any other provider specific properties. With this in mind instead of creating all the parameters in ProcedureExecutor.SetParameters it should defer this responsibility to the adapter (Perhaps a new ICommandParameterBuilder interface) and only rely on SetParameters to set the Parameter values.
In SqlServer and SqlAnywhere there is a provider specific CommandBuilder which call fully populate a Command with all the parameters including SqlDbType/SADbType, Size, Scale, Precision, Direction and any other provider specific properties. With this in mind instead of creating all the parameters in ProcedureExecutor.SetParameters it should defer this responsibility to the adapter (Perhaps a new ICommandParameterBuilder interface) and only rely on SetParameters to set the Parameter values.