Вы, кажется, получаете SqlCommandBuilder для загрузки всей информации о параметрах из БД и добавления ее в SqlCommand с заполненным набором параметров, но затем вы пропускаете его, ища входные параметры, загружаете их в список и перечисляете его, добавляя даже больше параметров к той же команде:
For Each parame As SqlParameter In inputParamList
Dim metodo() As String
Dim paramName As String = parame.ParameterName.ToString()
Dim paramValue As Object = DBNull.Value
metodo = parame.ParameterName.ToString().Split("@")
paramValue = Parametros(metodo(1))
'you're adding more parameters, with a slightly different but essentially same name!!?
Adp.SelectCommand.Parameters.AddWithValue(paramName, paramValue)
Next
Конечно, вы должны просто перечислить существующие параметры и указать для них значение на основе их имени (тип будет / должен быть уже правильным? Parametros is Dictionary (Of строка, объект), которая имеет имена параметров без @ и значений?)
For Each param As SqlParameter In Adp.SelectCommand.Parameters
If param.Direction = Data.ParameterDirection.Input OrElse _
param.Direction = Data.ParameterDirection.InputOutput Then
param.Value = Parametros(param.ParameterName.TrimStart("@"c))
End If
Next
Бросить все, что List inputParam / секунда ForEach прочь