Вы пытаетесь назначить пустую строку ('') для параметра int там, так что да, это не сработает.
Чтобы представить независимое от базы данных нулевое значение, используйте DbNull.Value .
new SqlParameter("colIntB", DbNull.Value)
(Обратите внимание, что я не использовал "@", который, по моему опыту, работает с Sqlparameters. Я не уверен, что вы можете сделать то же самое с ":" для Oracle.)
Еще один совет: используйте ваше соединение для создания команды и команду для создания параметров. Это создаст экземпляры нужного класса в зависимости от типа базового соединения:
IDbConnection conn = sql ? new SqlConnection(...) : new OracleConnection(...);
// this will give you either an SqlCommand or an OracleCommand
IDbCommand cmd = conn.CreateCommand();
// this will give you either an SqlParameter or an OracleParameter
IDbDataParameter param1 = cmd.CreateParameter();
param1.ParameterName = "colIntB";
param1.Value = objVal;
cmd.Parameters.Add(param1);