Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Соответствие
Введенная версия: Соответствие стандартам ODBC 1.0: ODBC
Сводка
SQLColumnPrivileges возвращает список столбцов и связанных с ними привилегий для указанной таблицы. Драйвер возвращает информацию в виде результата, установленного на указанном StatementHandle.
Syntax
SQLRETURN SQLColumnPrivileges(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3,
SQLCHAR * ColumnName,
SQLSMALLINT NameLength4);
Arguments
ОператорHandle
[Входные данные] Дескриптор инструкции.
Имя каталога
[Входные данные] Имя каталога. Если драйвер поддерживает имена для одних каталогов, но не для других, например, когда драйвер получает данные из разных СУБД, пустая строка («») обозначает каталоги без названий.
CatalogName не может содержать шаблон поиска по строкам.
Если атрибут оператора SQL_ATTR_METADATA_ID установлен в SQL_TRUE, CatalogName рассматривается как идентификатор, и его падеж не является значимым. Если это SQL_FALSE, то CatalogName — это обычный аргумент; Это воспринимается буквально, и его дело значимо. Дополнительные сведения см. в разделе "Аргументы" в функциях каталога.
NameLength1
[Ввод] Длина в символах *CatalogName.
SchemaName
[Входные данные] Имя схемы. Если драйвер поддерживает схемы для одних таблиц, но не для других, например, когда драйвер получает данные из разных СУБД, пустая строка ("") обозначает таблицы без схем.
SchemaName не может содержать шаблон поиска по строкам.
Если атрибут оператора SQL_ATTR_METADATA_ID установлен в SQL_TRUE, SchemaName рассматривается как идентификатор. Если это SQL_FALSE, то SchemaName — это обычный аргумент; Это воспринимается буквально, и его дело значимо.
NameLength2
[Ввод] Длина в символах *SchemaName.
TableName
[Входные данные] Имя таблицы. Этот аргумент не может быть нулевым указателем.
TableName не может содержать шаблон поиска по строкам.
Если атрибут оператора SQL_ATTR_METADATA_ID установлен в SQL_TRUE, TableName рассматривается как идентификатор, и его падеж не является значимым. Если это SQL_FALSE, то TableName — это обычный аргумент; Это воспринимается буквально, и его дело значимо.
NameLength3
[Ввод] Длина в символах *TableName.
ColumnName
[Ввод] Шаблон поиска по строкам для названий столбцов.
Если атрибут оператора SQL_ATTR_METADATA_ID установлен в SQL_TRUE, ColumnName рассматривается как идентификатор, и его падеж не имеет значения. Если это SQL_FALSE, то ColumnName — это аргумент значения шаблона; Это воспринимается буквально, и его дело значимо.
НазваниеДлина4
[Ввод] Длина в символах *ColumnName.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR или SQL_INVALID_HANDLE.
Diagnostics
Когда SQLColumnPrivileges возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, соответствующее значение SQLSTATE можно получить, вызвав SQLGetDiagRec с помощью HandleType SQL_HANDLE_STMT и Handleof StatementHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращаются SQLColumnPrivileges , и каждое из них объясняется в контексте этой функции; обозначение «(DM)» предшествует описаниям SQLSTATE, возвращаемым менеджером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Ошибка | Description |
|---|---|---|
| 01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 08S01 | Сбой связи | Связь между драйвером и источником данных, к которому был подключен драйвер, произошел сбой до завершения обработки функции. |
| 24000 | Недопустимое состояние курсора | На StatementHandle был открыт курсор, и был вызван SQLFetch или SQLFetchScroll . Эта ошибка возвращается диспетчером драйверов, если SQLFetch или SQLFetchScroll не вернул SQL_NO_DATA и возвращается драйвером, если SQLFetch или SQLFetchScroll вернул SQL_NO_DATA. Курсор был открыт на StatementHandle, но SQLFetch или SQLFetchScroll не были вызваны. |
| 40001 | Сбой сериализации | Транзакция была откатена из-за взаимоблокировки ресурсов с другой транзакцией. |
| 40003 | Неизвестное завершение инструкции | Связанное соединение завершилось сбоем во время выполнения этой функции, и состояние транзакции невозможно определить. |
| HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции. |
| HY008 | Операция отменена | Асинхронная обработка была включена для ОператораHandle. Функция была вызвана и до завершения выполнения, SQLCancel или SQLCancelHandle была вызвана на ОператорHandle. Затем функция снова была вызвана на ОператорHandle. Функция была вызвана и до завершения выполнения SQLCancel или SQLCancelHandle была вызвана оператором StatementHandle из другого потока в многопотоковом приложении. |
| HY009 | Недопустимое использование указателя NULL | Аргумент TableName был пустым указателем. Атрибут оператора SQL_ATTR_METADATA_ID был установлен в SQL_TRUE, аргумент CatalogName был нулевой указателем, а SQL_CATALOG_NAME InfoType возвращал, что имена каталогов поддерживаются. (DM) Атрибут оператора SQL_ATTR_METADATA_ID был установлен в SQL_TRUE, а аргумент SchemaName или ColumnName был null-указателем. |
| HY010 | Ошибка последовательности функций | (DM) Асинхронно выполняющаяся функция была вызвана для дескриптора соединения, связанного с ОператоромHandle. Эта асинхронная функция всё ещё выполнялась, когда она была вызвана. (DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ОператораHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров. (DM) асинхронно выполняющаяся функция (не эта) была вызвана для StatementHandle и по-прежнему выполнялась при вызове этой функции. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для ОператораHandle и возвращены SQL_NEED_DATA. Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов. |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY090 | Недопустимая длина строки или буфера | (DM) Значение одного из аргументов длины имени было меньше 0, но не равно SQL_NTS. |
| Значение одного из аргументов длины имени превысило максимальное значение длины соответствующего имени. (См. «Комментарии».) | ||
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
| HYC00 | Необязательный компонент не реализован | Было указано название каталога, и драйвер или источник данных не поддерживает каталоги. Было указано имя схемы, и драйвер или источник данных не поддерживает схемы. Для названия столбца был указан шаблон поиска по строкам, и источник данных не поддерживает поисковые шаблоны для этого аргумента. Комбинация текущих настроек атрибутов операторов SQL_CONCURRENCY и SQL_CURSOR_TYPE не поддерживалась драйвером или источником данных. Для атрибута инструкции SQL_ATTR_USE_BOOKMARKS задано значение SQL_UB_VARIABLE, а для атрибута инструкции SQL_ATTR_CURSOR_TYPE задан тип курсора, для которого драйвер не поддерживает закладки. |
| HYT00 | Время ожидания истекло. | Срок ожидания запроса истек, прежде чем источник данных вернул результирующий набор. Период времени ожидания задается через SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
| HYT01 | Время ожидания для подключения истекло | Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Драйвер не поддерживает эту функцию | (DM) Драйвер, связанный с StatementHandle , не поддерживает функцию. |
| IM017 | Опрос отключен в асинхронном режиме уведомлений | При использовании модели уведомлений опрос отключается. |
| IM018 | SQLCompleteAsync не был вызван для выполнения предыдущей асинхронной операции с этим дескриптором. | Если предыдущий вызов функции дескриптора возвращает SQL_STILL_EXECUTING и если включен режим уведомлений, sqlCompleteAsync должен вызываться на дескрипторе для выполнения последующей обработки и завершения операции. |
Comments
SQLColumnPrivileges возвращает результаты в виде стандартного набора результатов, упорядоченных по TABLE_CAT, TABLE_SCHEM, TABLE_NAME, COLUMN_NAME и PRIVILEGE.
Note
SQLColumnPrivileges может не возвращать привилегии для всех столбцов. Например, драйвер может не возвращать информацию о привилегиях для псевдостолбцов, таких как Oracle ROWID. Приложения могут использовать любой допустимый столбец, независимо от того, возвращается ли он SQLColumnPrivileges.
Длина столбцов VARCHAR не показана в таблице; Фактическая длина зависит от источника данных. Для определения фактической длины столбцов CATALOG_NAME, SCHEMA_NAME, TABLE_NAME и COLUMN_NAME приложение может вызвать SQLGetInfo с помощью опций SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN и SQL_MAX_COLUMN_NAME_LEN.
Note
Дополнительные сведения об общем использовании, аргументах и возвращаемых данных функций каталога ODBC см. в разделе "Функции каталога".
Следующие колонки были переименованы в честь ODBC 3. x. Изменения названий столбцов не влияют на обратную совместимость, поскольку приложения связываются по номеру столбцов.
| Столбец ODBC 2.0 | ODBC 3. Столбец x |
|---|---|
| ПРЕДИКАТ_ТАБЛИЦЫ | TABLE_CAT |
| владелец таблицы | TABLE_SCHEM |
В следующей таблице перечислены столбцы в результирующем наборе. Дополнительные столбцы за пределами столбца 8 (IS_GRANTABLE) могут быть определены драйвером. Приложение должно получать доступ к специфическим для драйвера столбцам, обратный отсчёт от конца набора результатов, а не указывая явное порядковое положение. Дополнительные сведения см. в разделе "Данные, возвращаемые функциями каталога".
| Название столбца | Номер столбца | Тип данных | Comments |
|---|---|---|---|
| TABLE_CAT (ODBC 1.0) | 1 | Varchar | Идентификатор каталога; NULL, если это не применимо к источнику данных. Если драйвер поддерживает каталоги для одних таблиц, но не для других, например, когда драйвер получает данные из разных СУБД, он возвращает пустую строку ("") для тех таблиц, в которых нет каталогов. |
| TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | Идентификатор схемы; NULL, если это не применимо к источнику данных. Если драйвер поддерживает схемы для одних таблиц, но не для других, например, когда драйвер получает данные из разных СУБД, он возвращает пустую строку ("") для тех таблиц, в которых нет схем. |
| TABLE_NAME (ODBC 1.0) | 3 | Варчар, а не NULL | Идентификатор таблицы. |
| COLUMN_NAME (ODBC 1.0) | 4 | Варчар, а не NULL | Имя столбца. Драйвер возвращает пустую строку для столбца, который не имеет имени. |
| ГРАНТОР (ODBC 1.0) | 5 | Varchar | Имя пользователя, предоставившего это право; NULL, если это не применимо к источнику данных. Для всех строк, где значение в столбце GRANTEE принадлежит объекту, столбец GRANTOR будет «_SYSTEM». |
| ПОЛУЧАТЕЛЬ ГРАНТА (ODBC 1.0) | 6 | Варчар, а не NULL | Имя пользователя, которому была предоставлена эта привилегия. |
| ПРИВИЛЕГИЯ (ODBC 1.0) | 7 | Варчар, а не NULL | Определяет привилегию столбца. Это может быть один из следующих (или других, поддерживаемых источником данных при определении реализации): SELECT: Получателю разрешено получать данные для столбца. INSERT: Получателю разрешения предоставлять данные для столбца в новых строках, которые вставляются в соответствующую таблицу. UPDATE: Получатель гранта имеет право обновлять данные в столбце. ССЫЛКИ: Получателю разрешается ссылаться на столбец внутри ограничения (например, уникальное, референтное или ограничение для проверки таблицы). |
| IS_GRANTABLE (ODBC 1.0) | 8 | Varchar | Указывает, имеет ли грантополучатель право предоставлять это право другим пользователям; «YES», «NO» или «NULL», если неизвестно или не применимо к источнику данных. Привилегия либо может быть предоставлена, либо не предоставляема, но не оба варианта. Набор результатов, возвращаемый SQLColumnPrivileges , никогда не будет содержать две строки, для которых все столбцы, кроме столбца IS_GRANTABLE, содержат одно и то же значение. |
Пример кода
Пример кода аналогичной функции см. в статье SQLColumns Function.
Связанные функции
| Тема | Смотри |
|---|---|
| Привязка буфера к столбцу в результирующем наборе | Функция SQLBindCol |
| Отмена обработки инструкций | Функция SQLCancel |
| Возврат столбцов в таблице или таблицах | Функция SQLColumns |
| Получение блока данных или прокрутка результирующий набор | Функция SQLFetchScroll |
| Получение нескольких строк данных | Функция SQLFetch |
| Возврат привилегий для стола или таблиц | Функция SQLTablePrivileges |
| Возврат списка таблиц в источнике данных | Функция SQLTables |
См. также
Справочник по API ODBC
Файлы заголовков ODBC