Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Функции управления каталогом.
Первая информация, которая может понадобится прикладной программе для соединения с неизвестным источником данных – это информация о таблицах. ODBC – функция SQLTables возвращает список имен таблиц, которые содержит указанный источник данных. Используя идентификатор оператора, драйвер возвращает информацию в виде результирующего множества. Синтаксис SQLTables имеет вид:
RETCODE SQLTables (hstmt, szTableQualifier, sbTableQualifier, szTableOwner, sbTableOwner, szTableName, sbTableName, szTableType, sbTableType)
Таблица 9 Описание параметров SQLTables
В образцах строк для поиска возможно использование символов-заменителей, так ‘%’ заменяет любую последовательность символов, а ‘-‘ – произвольный одиночный символ. Список типов таблиц для выбора может содержать следующие типы таблиц: ‘TABLE’, ’VIEW’, ‘SYSTEM TABLE’, ‘ALIAS’ и некоторые таблицы. Представления (VIEW) вообще-то не являются таблицами БД, но зачастую носят имя “виртуальных таблиц” в силу похожести использования для операторов извлечения. Если символ ‘%’ используется в каком-то из аргументов функции в качестве шаблона выбора, а все остальные аргументы шаблонов – пустые строки, то можно получить список всех квалификаторов, владельцев или таблиц для выбранного источника. При использовании такого способа вызова все столбцы в результирующем множестве, кроме одного, устанавливаются в NULL. Например следующий вызов возвратит список всех таблиц и представлений:
rc=SQLTables (hstmt, “”, SQL_NTS, “”, SQL_NTS, “%”, SQL_NTS, “’TABLE’, ‘VIEW’”, SQL_NTS).
Результирующее множество функции SQLTables одно и тоже для любого её вызова и представлено в таблице 10.
Таблица 10 Результирующее множество SQLTables
Как только информация о таблицах получена, зачастую бывает необходимо получить информацию о столбцах интересующей таблицы. Чтобы выбрать эту информацию, программа должна вызвать SQLColumns(). При вызове драйвер, используя идентификатор оператора, возвращает эту информацию в результирующем множестве:
Таблица 11 Результирующее множество SQLColumns()
Столбцы 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)
Таблица 12 Описание параметров SQLColumns
Первые семь параметров общие для большинства функций работы с системным каталогом. Оставшиеся два специфичны для данной функции. Для приложений может оказаться оправданным возвращение всех таблиц баз данных посредством SQLTables, однако это не совсем справедливо по отношению к столбцам. В больших базах список всех столбцов по всем таблицам очень большой. Поэтому для прикладной программы важно тщательное использование параметров, ограничивающих результирующее множество.
Непосредственное выполнение Непосредственное выполнение целесообразно использовать в следующих случаях: ● SQL – операторы, которые должны быть выполнены, выполняются только один раз, ● Не требуется информация о результирующем множестве до выполнения оператора. Непосредственное выполнение реализуется с помощью функции SQLExecDirect() и представляет наиболее быстрый способ запуска SQL – оператора при одноразовом выполнении. Синтаксис функции имеет вид:
RETCODE SQLExecDirect( hstmt, szSqlStr, sbSqlStr) Таблица 13 Описание параметров SQLExecDirect()
Например следующий вызов функции непосредственного выполнения будет возвращать все строки из таблицы Staff:
rc=SQLExecDirect (hstmt, “select * from staff”, SQL_NTS).
Подготавливаемое выполнение Данный способ выполнения оператора предпочтителен в случае, если оператор предполагается выполнять несколько раз и требуется предварительная информация о результирующем множестве. Для подготавливаемого выполнения необходимы две функции: SQLPrepare() и SQLExecute(). SQLPrepare() подготавливает SQL – строку для выполнения. Синтаксис её ничем не отличается от синтаксиса SQLExecDirect(). Синтаксис SQLExecute() следующий:
RETCODE SQLExecute (hsmt) где hsmt – предварительно назначенный идентификатор оператора.
SQLPrepare() отличается от SQLExecDirect() тем, что при вызове SQLPrepare() оператор на самом деле не выполняется. Вместо этого определяется путь доступа к данным и информация о результирующем множестве становится доступной для использования. Так функции SQLNumResultCols() и SQLRowCount() при вызове возвращают количество столбцов и строк результирующего множества. Так как план выполнения оператора после его подготовки известен, то его выполнение может выполняться несколько быстрее, чем при использовании SQLExecDirect(). Кроме того, каждый вызов SQLExecute() передает базе данных только идентификатор, а не строку запроса, что может несколько снизить сетевой трафик.
Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 549; Нарушение авторского права страницы