Как используются метаданные?
Метаданные требуются приложениям для большинства операций с результирующими наборами. Например, приложение использует тип данных столбца, чтобы определить, какую переменную привязывать к этому столбцу. Он использует длину байтов символьного столбца, чтобы определить, сколько пространства требуется для отображения данных из этого столбца. Способ определения метаданных для столбца зависит от типа приложения.
Вертикальные приложения работают с предопределенными таблицами и выполняют предопределенные операции с этими таблицами. Так как метаданные результирующих наборов для таких приложений определены до того, как приложение даже записывается и управляется разработчиком приложения, его можно жестко закодировать в приложении. Например, если столбец идентификатора заказа определен в источник данных как 4-байтовое целое число, приложение может всегда привязывать 4-байтовые целые числа к этому столбцу. Если метаданные жестко запрограммированы в приложении, изменения в используемых приложением таблицах обычно подразумевают изменения в коде приложения. Это редко проблема, так как такие изменения обычно вносятся в рамках нового выпуска приложения.
Как и вертикальные приложения, пользовательские приложения обычно работают с предопределенными таблицами и выполняют предопределенные операции с этими таблицами. Например, приложение может быть записано для передачи данных между тремя различными источниками данных; Передаваемые данные обычно известны при написании приложения. Таким образом, пользовательские приложения также, как правило, имеют жестко закодированные метаданные.
Универсальные приложения, особенно те, которые поддерживают нерегламентированные запросы, почти никогда не знают метаданные создаваемых результирующих наборов. Поэтому они должны обнаруживать метаданные во время выполнения с помощью функций SQLNumResultCols, SQLDescribeCol и SQLColAttribute, которые описаны в следующем разделе, SQLDescribeCol и SQLColAttribute.
Все приложения, независимо от их типа, могут жесткого кода метаданные для результирующих наборов, возвращаемых функциями каталога. Эти результирующие наборы определены в справочном разделе этого руководства.