Поделиться через


sp_columns_ex (Transact-SQL)

Возвращает сведения о столбцах для указанных таблиц связанного сервера по одной строке на столбец. sp_columns_ex возвращает сведения об одном столбце, если указан параметр column.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_columns_ex [ @table_server = ] 'table_server' 
     [ , [ @table_name = ] 'table_name' ] 
     [ , [ @table_schema = ] 'table_schema' ] 
     [ , [ @table_catalog = ] 'table_catalog' ] 
     [ , [ @column_name = ] 'column' ] 
     [ , [ @ODBCVer = ] 'ODBCVer' ]

Аргументы

  • [ @table_server = ] 'table_server'
    Имя связанного сервера, для которого возвращаются сведения о столбцах. Аргумент table_server имеет тип sysname и не имеет значения по умолчанию.

  • [ @table_name = ] 'table_name']
    Имя таблицы, для которой возвращаются сведения о столбцах. Аргумент table_name имеет тип sysname и значение по умолчанию NULL.

  • [ @table_schema = ] 'table_schema'
    Имя схемы таблицы, для которой возвращаются сведения о столбцах. Аргумент table_schema имеет тип sysname и значение по умолчанию NULL.

  • [ @table_catalog = ] 'table_catalog'
    Имя каталога таблицы, для которой возвращаются сведения о столбцах. Аргумент table_catalog имеет тип sysname и значение по умолчанию NULL.

  • [ @column_name = ] 'column'
    Имя столбца базы данных, для которого возвращаются сведения. Аргумент column имеет тип sysname и значение по умолчанию NULL.

  • [ @ODBCVer = ] 'ODBCVer'
    Используемая версия ODBC. Параметр ODBCVer имеет тип int и значение 2 по умолчанию. Это значение соответствует ODBC версии 2. Допустимы значения 2 или 3. Сведения о различиях между версиями 2 и 3 см. в спецификации ODBC SQLColumns.

Значения кодов возврата

Нет

Результирующие наборы

Имя столбца

Тип данных

Описание

TABLE_CAT

sysname

Имя квалификатора таблицы или представления. Некоторые СУБД поддерживают трехкомпонентные имена таблиц (qualifier.owner.name). В SQL Server 2008 и SQL Server 2005 этот столбец представляет имя базы данных. В некоторых системах он представляет имя сервера из среды базы данных таблицы. Это поле может иметь значение NULL.

TABLE_SCHEM

sysname

Имя владельца таблицы или представления. В SQL Server этот столбец представляет имя пользователя базы данных, который создал таблицу. Это поле всегда возвращает значение.

TABLE_NAME

sysname

Имя таблицы или представления. Это поле всегда возвращает значение.

COLUMN_NAME

sysname

Выдается имя каждого столбца таблицы TABLE_NAME. Это поле всегда возвращает значение.

DATA_TYPE

smallint

Целочисленное значение, соответствующее обозначению типа ODBC. Если это тип данных, который не может быть сопоставлен с типом данных ODBC, возвращается значение NULL. Собственное имя типа данных возвращается в столбце TYPE_NAME.

TYPE_NAME

varchar(13)

Строка, представляющая тип данных. Название типа предоставляется базовой СУБД.

COLUMN_SIZE

int

Количество значащих цифр. Возвращается значение столбца PRECISION для десятичной системы счисления.

BUFFER_LENGTH

int

Размер буфера при передаче данных.

DECIMAL_DIGITS

smallint

Число цифр справа от десятичной запятой.

NUM_PREC_RADIX

smallint

Основание системы счисления для числовых типов данных.

NULLABLE

smallint

Указывает возможность содержать значение NULL.

1 = значение NULL допустимо.

0 = значение NULL недопустимо.

REMARKS

varchar(254)

Это поле всегда возвращает значение NULL.

COLUMN_DEF

varchar(254)

Значение столбца по умолчанию.

SQL Server 2008 и SQL Server 2005 отличаются от SQL Server 2000 способом расшифровки и хранения выражений SQL в метаданных каталога. Семантика расшифрованных выражений соответствует исходному тексту, однако правильность синтаксиса не гарантируется. Например, пробельные символы удаляются из расшифрованного выражения. Дополнительные сведения см. в разделе Изменения в работе функций компонента Database Engine в SQL Server 2008 R2.

SQL_DATA_TYPE

smallint

Значение типа данных SQL в том же виде, что и в поле TYPE дескриптора. Этот столбец содержит то же значение, что и столбец DATA_TYPE, за исключением типа данных datetime и типа данных SQL-92 interval. Этот столбец всегда возвращает значение.

SQL_DATETIME_SUB

smallint

Код подтипа для типа datetime и типа данных SQL-92 interval. Для других типов данных этот столбец возвращает значение NULL.

CHAR_OCTET_LENGTH

int

Максимальная длина столбца символьного или целочисленного типа в байтах. Для всех других типов данных этот столбец возвращает значение NULL.

ORDINAL_POSITION

int

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

IS_NULLABLE

varchar(254)

Допустимость значения NULL для столбца таблицы. Это значение определяется в соответствии с правилами ISO. СУБД, совместимая с ISO SQL, не может вернуть пустую строку.

YES = Столбец может содержать значение NULL.

NO = Столбец не может содержать значения NULL.

Если возможность возвратить значение NULL неизвестна, этот столбец возвращает строку нулевой длины.

Значение, возвращаемое в данном столбце, отличается от значения, возвращаемого в столбце NULLABLE.

SS_DATA_TYPE

tinyint

Тип данных SQL Server, используемый расширенными хранимыми процедурами. Дополнительные сведения см. в разделе Типы данных (компонент Database Engine).

Дополнительные сведения см. в документации по Microsoft ODBC.

Замечания

При выполнении sp_columns_ex запрашивается набор строк COLUMNS интерфейса IDBSchemaRowset поставщика OLE DB, соответствующего table_server. Этому интерфейсу для ограничения возвращаемых строк передаются аргументы table_name, table_schema, table_catalog и column.

sp_columns_ex возвращает пустой результирующий набор, если поставщик OLE DB для соответствующего связанного сервера не поддерживает набор строк COLUMNS интерфейса IDBSchemaRowset.

sp_columns_ex соответствует требованиям к идентификаторам с разделителями. Дополнительные сведения см. в разделе Идентификаторы с разделителями (компонент Database Engine).

Разрешения

Необходимо разрешение SELECT для схемы.

Примеры

В следующем примере возвращается тип данных для столбца JobTitle в таблице HumanResources.Employee в базе данных База данных AdventureWorks2008R2 на связанном сервере Seattle1.

EXEC sp_columns_ex 'Seattle1', 
   'Employee', 
   'HumanResources', 
   'AdventureWorks2008R2', 
   'JobTitle';