Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

25.5.1 Функции управления каталогом

Первая информация, которая может понадобиться прикладной программе для соединения с неизвестным источником данных – это информация о таблицах. ODBC-функция SQLTables возвращает список имен таблиц, которые содержит указанный источник данных. Используя идентификатор оператора, драйвер возвращает информацию в виде результирующего множества. Синтаксис SQLTables имеет вид:

RETCODE SQLTables (hstmt, szTableQualifier, sbTableQualifier,

szTableOwner, sbTableOwner, szTableName,

sbTableName, szTableType, sbTableType)

Таблица 24 Описание параметров SQLTables

Тип

Аргумент

Использование

Описание

HSTMT

hstmt

Вход

Идентификатор оператора

UCHAR*

szTableQualifier

Вход

Имя квалификатора или “”, означающая, что таблицы не имеют квалификаторов

SWORD

sbTableQualifier

Вход

Длина szTableQualifier или SQL_NTS

UCHAR*

szTableOwner

Вход

Образец строки поиска для имен собственников или “”, означающая что данная база не поддерживает имен собственников.

SWORD

sbTableOwner

Вход

Длина szTableOwner или SQL_NTS

UCHAR*

szTableName

Вход

Образец строки поиска для имен таблиц.

SWORD

sbTableName

Вход

Длина szTableName или SQL_NTS

UCHAR*

szTableType

Вход

Список типов таблиц для выбора.

SWORD

sbTableType

Вход

Длина szTableType или SQL_NTS

В образцах строк для поиска возможно использование символов-заменителей, так ‘%’ заменяет любую последовательность символов, а ‘-‘ – произвольный одиночный символ. Список типов таблиц для выбора может содержать следующие типы таблиц: ‘TABLE’,’VIEW’, ‘SYSTEM TABLE’, ‘ALIAS’ и некоторые таблицы. Представления (‘VIEW’) вообще-то не являются таблицами БД, но зачастую носят имя “виртуальных таблиц” в силу похожести использования для операторов извлечения. Если символ ‘%’ используется в каком-то из аргументов функции в качестве шаблона выбора, а все остальные аргументы шаблонов – пустые строки, то можно получить список всех квалификаторов, владельцев или таблиц для выбранного источника. При использовании такого способа вызова все столбцы в результирующем множестве, кроме одного, устанавливаются в NULL.

Например, следующий вызов возвратит список всех таблиц и представлений:

rc=SQLTables (hstmt, “”, SQL_NTS, “”,SQL_NTS, “%”, SQL_NTS, “’TABLE’, ‘VIEW’”, SQL_NTS).

Результирующее множество функции SQLTables одно и тоже для любого её вызова и представлено в таблице 25.

Таблица 25 Результирующее множество SQLTables

Имя столбца

Тип данных

Объяснение

TABLE_QUALIFIER

VARCHAR(128)

Идентификатор квалификатора

TABLE_OWNER

VARCHAR(128)

Идентификатор собственника

TABLE_NAME

VARCHAR(128)

Идентификатор таблицы

TABLE_TYPE

VARCHAR(128)

Идентификатор типа таблицы (“TABLE”, “VIEW” и др. строки)

REMARKS

VARCHAR(256)

Описание таблицы

Как только информация о таблицах получена, зачастую бывает необходимо получить информацию о столбцах интересующей таблицы. Чтобы выбрать эту информацию, программа должна вызвать SQLColumns(). При вызове драйвер, используя идентификатор оператора, возвращает эту информацию в результирующем множестве:

Таблица 26 Результирующее множество SQLColumns()

Имя столбца

Тип данных

Описание

TABLE_QUALIFIER

VARCHAR(128)

Идентификатор квалификатора

TABLE_OWNER

VARCHAR(128)

Идентификатор собственника

TABLE_NAME

VARCHAR(128)

Название таблицы

COLUMN_NAME

VARCHAR(128)

Название столбца

DATA_TYPE

Smallint

SQL – тип данных

TYPE_NAME

VARCHAR(128)

Имя типа данных в зависимости от источника

PRECISION

Integer

Точность

LENGTH

Integer

Длина столбца

SCALE

Smallint

Масштаб

NULLABLE

Smallint

SQL_NO_NULLS

SQL_NULLABLE

SQL_NULLABLE_UNKNOWN

REMARKS

VARCHAR(254)

Описание таблицы

Столбцы DATA_TYPE и TYPE_NAME определяют тип данных по разному. DATA_TYPE является ODBC SQL – типом данных, а TYPE_NAME является специфическим типом данных источника. Один и тот же ODBC SQL –тип может иметь разные типы данных для каждого источника. Столбцы PRECISION и SCALE можно использовать в других функциях (например в функции SQLBindParameter). PRECISION определяет общее число цифр или максимальную длину, а SCALE определяет количество цифр справа от десятичной точки и используется для числовых столбцов.

Синтаксис же функции следующий:

RETCODE SQLColumns (hstmt, szTableQualifier, sbTableQualifier,

szTableOwner, sbTableOwner, szTableName,

sbTableName, szColumnName,

sbColumnName)

Таблица 27 Описание параметров SQLColumns

Тип

Аргумент

Использование

Описание

HSTMT

hstmt

Вход

Идентификатор оператора

UCHAR*

szTableQualifier

Вход

Квалификатор таблиц, “” означает, сто таблицы источника не поддерживают квалификаторов

SWORD

sbTableQualifier

Вход

Длина szTableQualifier

UCHAR*

szTableOwner

Вход

Образец строки поиска для имен собственников

SWORD

sbTableOwner

Вход

Длина szTableOwner

UCHAR*

szTableName

Вход

Образец строки поиска для имен таблиц

SWORD

sbTableName

Вход

Длина szTableName

UCHAR*

szColumnName

Вход

Образец строки поиска для имен столбцов

SWORD

sbColumnName

Вход

Длина szColumnName

Первые семь параметров общие для большинства функций работы с системным каталогом. Оставшиеся два специфичны для данной функции. Для приложений может оказаться оправданным возвращение всех таблиц баз данных посредством SQLTables, однако это не совсем справедливо по отношению к столбцам. В больших базах список всех столбцов по всем таблицам очень большой. Поэтому для прикладной программы важно тщательное использование параметров, ограничивающих результирующее множество.