Получить информацию о записи выборки данных

Назначение
 

Метод GetAnswerInfo предоставляет информацию о структуре всей записи выборки данных или об отдельном её поле в виде ассоциированного массива.

Синтаксис
value {< объект Connect > | < объект Cursor >}.GetAnswerInfo([Number]) 
Number

Порядковый номер столбца в записи выборки данных. Нумерация столбцов начинается с 1.

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

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

Ассоциированный массив атрибутов столбца записи выборки данных (таблицы 2, 3).

В следующих случаях имена столбцов не предоставляются:

  • если столбец в выборке имеет синоним (например, select ... auto.model as "Модель") выдаются имя столбца или синоним;

  • если значением столбца является выражение (например, функция select sysdate;) или выражение (abs (x) + 67);

  • если значением столбца является объединение (пересечение, исключение) значений нескольких запросов:

Таблица 2. Структура описания простых столбцов
ПараметрОписание
User Имя владельца таблицы
Table Имя таблицы
Column Имя столбца
Length Длина столбца
Type Числовой идентификатор типа данных столбца (в спецификации СУБД ЛИНТЕР)
Precision Точность (для числовых данных типа Numeric)
Scale Масштаб (для данных типа Numeric)
CharSet Идентификатор кодовой страницы

Таблица 3. Структура описания BLOB-столбцов
ПараметрОписание
User Имя владельца таблицы
Table Имя таблицы
Column Имя столбца
Length Длина столбца
Type Тип данных столбца
Size Размер BLOB-данных
TypeObj Пользовательский тип BLOB-данных
Index_Time Дата/время создания фразового индекса

Пример
require "LinRuby"

begin
  connect = LinterConnection.Create()
  connect.Open("SYSTEM", "MANAGER8", nil, M_EXCLUSIVE | Q_ENCODE)
  puts "connection to RDBMS Linter is successed"
  connect.SQLExecuteDirect("select NAME, JOB, CITY from PERSON where FIRSTNAM='PHIL';")
  i = 0
  answer_info = connect.GetAnswerInfo()
  if  answer_info != nil
    while ( i <  answer_info.size )
      puts "#{answer_info.keys[i]}"
      j = 0
      while ( j <  answer_info.values[i].size )
        puts "#{answer_info.values[i].keys[j]} = #{answer_info.values[i].values[j]}"
        j = j + 1
      end
      i = i + 1
    end
  else
    puts "Answer info is nil"
  end
rescue = > error
  puts error
ensure
  if connect != nil
    connect.Close()
  end
end