public IList <DbColumn> GetColumns(DbTable table) { List <DbColumn> result = new List <DbColumn>(); Dictionary <string, DbColumnArray> columnArrays = new Dictionary <string, DbColumnArray>(); using (OracleCommand cmd = new OracleCommand(OracleQueries.RetrieveColumns, connection)) { cmd.Parameters.Add(new OracleParameter(":Owner", table.Schema.Name)); cmd.Parameters.Add(new OracleParameter(":TableName", table.Name)); OracleDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string colname = reader.GetString(0); string coltype = reader.GetString(1); if (coltype.Contains("CHAR")) { coltype = String.Format("{0}({1})", coltype, reader.GetValue(2)); } else if (reader.GetValue(3) != DBNull.Value) { coltype = String.Format("{0}({1},{2})", coltype, reader.GetValue(3), reader.GetValue(4)); } bool mandatory = "N".Equals(reader.GetString(5)); if ("TRC_NUM".Equals(colname)) { continue; } if ("DAT_CRE".Equals(colname)) { continue; } if ("USR_CRE".Equals(colname)) { continue; } if ("DAT_MOD".Equals(colname)) { continue; } if ("USR_MOD".Equals(colname)) { continue; } Match match = ColumnArrayParser.Match(colname); if (match.Success) { DbColumnArray array; string basename = match.Groups[1].Value; if (!columnArrays.TryGetValue(basename, out array)) { array = new DbColumnArray(table, basename, coltype); columnArrays[basename] = array; result.Add(array); } array.ColumnNames.Add(colname); } result.Add(new DbColumn(table, colname, coltype, mandatory)); } } return(result); }
public ColumnArrayElement(TableElement table, DbColumnArray columnArray) : base(table, columnArray) { this.columnArray = columnArray; this.columnNames = columnArray.ColumnNames.ToArray(); }