protected override ReadOnlyList <IParameter> GetParameters(IDbConnection cn) { DBStructure.INFORMATION_SCHEMA_PARAMETERSDataTable dt = new DBStructure.INFORMATION_SCHEMA_PARAMETERSDataTable(); using (SqlCommand cmd = (SqlCommand)cn.CreateCommand()) { StringBuilder sb = new StringBuilder(); sb.AppendLine(DBSchemaInfo.Properties.Resources.SqlServerGetParameters); sb.AppendLine("WHERE"); if (!string.IsNullOrEmpty(this.ObjectCatalog)) { sb.Append("SPECIFIC_CATALOG = @Catalog"); cmd.Parameters.AddWithValue("@Catalog", this.ObjectCatalog); } if (!string.IsNullOrEmpty(this.ObjectSchema)) { sb.Append("SPECIFIC_SCHEMA = @Schema"); cmd.Parameters.AddWithValue("@Schema", this.ObjectSchema); } sb.Append("SPECIFIC_NAME = @Name"); cmd.Parameters.AddWithValue("@Name", this.ObjectName); cmd.CommandText = sb.ToString(); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } } DBStructure.INFORMATION_SCHEMA_PARAMETERSRow[] rows = new DBStructure.INFORMATION_SCHEMA_PARAMETERSRow[dt.Count]; return(GetParameters(rows)); }
public SqlStoredProcedureParameter(DBStructure.INFORMATION_SCHEMA_PARAMETERSRow dr) { ColumnScale = 0; ColumnLength = 0; ParameterName = dr.PARAMETER_NAME; ParameterType = dr.DATA_TYPE; NativeType = ParameterType; _sqlDbType = SqlTypeMapper.GetSqlDbType(dr.DATA_TYPE); Order = Convert.ToInt32(dr.ORDINAL_POSITION); if (!dr.IsCHARACTER_MAXIMUM_LENGTHNull()) { ColumnLength = dr.CHARACTER_MAXIMUM_LENGTH; } else if (!dr.IsNUMERIC_PRECISIONNull()) { ColumnLength = Convert.ToInt64(dr.NUMERIC_PRECISION); if (!dr.IsNUMERIC_SCALENull()) { ColumnScale = dr.NUMERIC_SCALE; } } else if (!dr.IsDATETIME_PRECISIONNull()) { ColumnLength = Convert.ToInt64(dr.DATETIME_PRECISION); } }