public DbParameter CreateParameter(DbHParameter parameter)
 {
     return new OracleParameter
                {
                    ParameterName = parameter.ParameterName,
                    OracleDbType = GetOracleType(parameter.DbHType),
                    Direction = parameter.Direction,
                    IsNullable = parameter.IsNullable,
                    SourceColumn = parameter.SourceColumn,
                    SourceVersion = parameter.SourceVersion,
                    Value = parameter.Value,
                    SourceColumnNullMapping = parameter.SourceColumnNullMapping,
                    Size = parameter.Size,
                };
 }
        public bool CheckParameter(string procName, DbHParameter par, string serviceName)
        {
            MetaDataProcedure proc = GetProcedureMetadata(procName, serviceName);
            MetaDataProcedureArguments procPar = proc.Arguments.Find(t => t.Name.ToUpper() == par.ParameterName.ToUpper());

            if (procPar == null)
                return false;
            if (procPar.Direction == par.Direction && procPar.DbHType == par.DbHType)
                return true;

            if (procPar.Direction == par.Direction && procPar.DbHType != par.DbHType && par.Value != null)
            {
                switch (procPar.DbHType)
                {
                    case DbHType.Int16:
                        short shortT;
                        return Int16.TryParse(par.Value.ToString(), out shortT);
                    case DbHType.Int32:
                        int intT;
                        return Int32.TryParse(par.Value.ToString(), out intT);
                    case DbHType.Int64:
                        long longT;
                        return Int64.TryParse(par.Value.ToString(), out longT);
                    case DbHType.Float:
                        float floatT;
                        return Single.TryParse(par.Value.ToString(), out floatT);
                    case DbHType.Double:
                        double doubleT;
                        return Double.TryParse(par.Value.ToString(), out doubleT);
                    case DbHType.Decimal:
                        decimal decimalT;
                        return Decimal.TryParse(par.Value.ToString(), out decimalT);
                }
            }
            return false;
        }
 /// <summary>
 /// </summary>
 /// <param name="procName"></param>
 /// <param name="par"></param>
 /// <param name="serviceName"></param>
 /// <returns></returns>
 public static bool CheckParameter(string procName, DbHParameter par, string serviceName)
 {
     IDriver driver = DataManager.GetDriver(serviceName);
     return driver.CheckParameter(procName, par, serviceName);
 }