sp_columns (Transact-SQL)

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

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

Синтаксис

sp_columns [ @table_name = ] object  [ , [ @table_owner = ] owner ] 
     [ , [ @table_qualifier = ] qualifier ] 
     [ , [ @column_name = ] column ] 
     [ , [ @ODBCVer = ] ODBCVer ]

Аргументы

  • [ @table_name=] object
    Имя объекта, используемого для возврата сведения о каталоге. object может быть таблицей, представлением или другим объектом, в котором есть столбцы, например функции с табличными значениями. object имеет тип nvarchar(384) и не имеет значения по умолчанию. Поиск совпадений по шаблону поддерживается.

  • [ @table_owner=] owner
    Владелец объекта, в который возвращаются сведения о каталоге. Аргумент owner имеет тип nvarchar(384) и значение по умолчанию NULL. Поиск совпадений по шаблону поддерживается. Если аргумент owner не задан, применяются правила видимости объекта по умолчанию базовой СУБД.

    Если текущий пользователь является владельцем объекта с указанным именем, возвращаются столбцы этого объекта. Если аргумент owner не указан и текущему пользователю не принадлежит указанный в аргументе object объект, то хранимая процедура sp_columns выполняет поиск объекта с указанным именем object, принадлежащего владельцу базы данных. Если такой объект существует, возвращаются его столбцы.

  • [ @table_qualifier=] qualifier
    Имя квалификатора объекта. Аргумент qualifier имеет тип sysname и значение по умолчанию NULL. Некоторые СУБД поддерживают трехкомпонентные имена объектов. (qualifier**.owner.**name). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, в которой находится объект.

  • [ @column_name=] column
    Одиночный столбец, используемый, если нужен только один столбец информации каталога. Аргумент column имеет тип nvarchar(384) и значение по умолчанию NULL. Если аргумент column не указан, возвращаются все столбцы. В версии SQL Server аргумент column представляет имя столбца в виде, указанном в таблице syscolumns. Поиск совпадений по шаблону поддерживается. Для максимальной совместимости клиент шлюза должен использовать только стандартное согласование SQL-92 (символы-шаблоны % и _).

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

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

Нет

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

Хранимая процедура каталога sp_columns идентична представлению SQLColumns в ODBC. Возвращаемые результаты сортируются по столбцам TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME.

Имя столбца

Тип данных

Описание

TABLE_QUALIFIER

sysname

Имя квалификатора объекта. Это поле может иметь значение NULL.

TABLE_OWNER

sysname

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

TABLE_NAME

sysname

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

COLUMN_NAME

sysname

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

DATA_TYPE

smallint

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

TYPE_NAME

sysname

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

PRECISION

int

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

LENGTH

int

Размер передаваемых данных.1

SCALE

smallint

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

RADIX

smallint

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

NULLABLE

smallint

Указывает допустимость значений NULL.

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

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

REMARKS

varchar(254)

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

COLUMN_DEF

nvarchar(4000)

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

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. Для других типов данных этот столбец возвращает значение NULL.

CHAR_OCTET_LENGTH

int

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

ORDINAL_POSITION

int

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

IS_NULLABLE

varchar(254)

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

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

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

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

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

SS_DATA_TYPE

tinyint

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

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

Разрешения

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

Замечания

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

Примеры

Следующий пример возвращает данные столбца для указанной таблицы.

USE AdventureWorks2008R2;
GO
EXEC sp_columns @table_name = N'Department',
   @table_owner = N'HumanResources';