Получить информацию о столбцах таблицы БД

Назначение
 

Метод SQLColumns предоставляет информацию о столбцах таблицы БД.

Синтаксис
value {< объект Connect > | < объект Cursor >}.SQLColumns(UserName, TableName, ColumnName) 
UserName

Шаблон имени владельца таблицы (может быть nil). Шаблон может содержать спецсимволы _ и % (см. документ «СУБД ЛИНТЕР. Справочник по SQL», конструкция «Предикат подобия»).

TableName

Шаблон имени таблицы. Если шаблон не задан (указано nil), информация предоставляется обо всех таблицах данного пользователя.

ColumnName

Шаблон имени столбца таблицы. Если шаблон не задан (указано nil), информация предоставляется обо всех столбцах таблицы (таблиц).

Возвращаемое значение

Объект Connection (Cursor). Возвращаемые записи можно получить с помощью функций SQLFetchRow, SQLFetchHash, SQLFetchManyRow, SQLFetchManyHash.

Структура возвращаемой записи:

Столбец записи Описание
TABLE_CAT  Пробелы, char(66)
TABLE_SCHEM  Схема объекта (имя владельца таблицы), char(66)
TABLE_NAME  Имя таблицы, char(66)
COLUMN_NAME  Имя столбца, char(66)
DATA_TYPE  Числовой идентификатор типа данных столбца СУБД ЛИНТЕР:
  • 1 – 'character';

  • 2 – 'smallint', 'integer', 'bigint' (действительный тип данных распознается по длине возвращаемого значения в поле CHAR_OCTET_LENGTH);

  • 3 – 'real', 'double' (действительный тип данных распознается по длине возвращаемого значения в поле CHAR_OCTET_LENGTH);

  • 4 – 'date';

  • 5 – 'decimal';

  • 6 – 'byte';

  • 7 – 'blob';

  • 8 – 'varchar';

  • 9 – 'varbyte';

  • 10 – 'boolean';

  • 11 – 'nchar';

  • 12 – 'nchar varying';

  • 13 – 'extfile'

TYPE_NAME  Название типа данных (см. поле DATA_TYPE, символьный идентификатор типа данных)
COLUMN_SIZE  Возвращается для всех типов данных. Для типов данных с определяемой длиной (char, varchar, byte, varbyte, nchar, nvarchar) содержит максимальную длину значений столбца в символах
BUFFER_LENGTH  Длина буфера данных, выделяемого для SQLFetchRow
DECIMAL_DIGITS  Количество значимых чисел после точки
NUM_PREC_RADIX  Подробнее см. документ «СУБД ЛИНТЕР. ODBC-драйвер»
NULLABLE  Допускается или нет NULL-значение
REMARKS  Комментарий к столбцу
COLUMN_DEF  Значение столбца по умолчанию
SQL_DATA_TYPE  Числовой идентификатор типа данных столбца по стандарту ODBC
SQL_DATETIME_SUB  Код подтипа дат и промежуточных типов дат (по стандарту ODBC)
CHAR_OCTET_LENGTH  Максимальная длина столбца в байтах (для всех типов данных)
ORDINAL_POSITION  Порядковый номер столбца в таблице (нумерация начинается с 1)
IS_NULLABLE  Значением столбца является NULL-значение
Пример
require "LinRuby"

begin
  connect = LinterConnection.Create()
  connect.Open("SYSTEM", "MANAGER8", nil, M_EXCLUSIVE | Q_866)
  puts "connection to RDBMS Linter is successed"
  connect.SQLColumns('SYSTEM', nil, nil)
  i = 1
  while ( i < = connect.GetRowCount )
    hash = connect.SQLFetchHash(FETCH_ABSNUM, i)
    j = 0
    while ( j <  hash.keys.size )
      puts "#{hash.keys[j]} = #{hash.values[j]}"
      j = j +1
    end
    i = i + 1
  end
rescue = > error
  puts error
ensure
  if connect != nil
    connect.Close()
  end
end