21: def columns(table)
22: cols = []
23:
24: stmt = @handle.columns(table)
25: stmt.ignorecase = true
26:
27: stmt.each_hash do |row|
28: info = Hash.new
29: cols << info
30:
31: info['name'] = row['COLUMN_NAME']
32: info['type_name'] = row['TYPE_NAME']
33: info['sql_type'] = row['DATA_TYPE']
34: info['nullable'] =
35: case row['NULLABLE']
36: when 1
37: true
38: when 0
39: false
40: else
41: nil
42: end
43: info['precision'] = row['PRECISION']
44: info['scale'] = row['SCALE']
45: end
46:
47: stmt.drop
48: cols
49: rescue DBI::DBD::ODBC::ODBCErr => err
50: raise DBI::DatabaseError.new(err.message)
51: end