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


sp_columns (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @column_name = ] N'column_name' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Аргументы

[ @table_name = ] N'table_name'

@table_name — nvarchar(384), без значения по умолчанию.

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

[ @table_owner = ] N'table_owner'

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

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

[ @table_qualifier = ] N'table_qualifier'

@table_qualifier имеет имя sysname с значением по умолчаниюNULL.

Имя квалификатора объекта. @table_qualifier имеет имя sysname с значением по умолчаниюNULL. Различные продукты СУБД поддерживают трехкомпонентное именование объектов (<qualifier>.<owner>.<name>). В SQL Server этот столбец представляет имя базы данных. В некоторых продуктах он представляет имя сервера в среде базы данных объекта.

[ @column_name = ] N'column_name'

Один столбец и используется, если требуется только один столбец сведений каталога. @column_name — nvarchar(384) с значением по умолчаниюNULL. Если @column_name не указан, возвращаются все столбцы. В SQL Server @column_name представляет имя столбца, как указано в 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.

Имя столбца Тип данных Description
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 находится в базе 10.
LENGTH int Размер передаваемых данных. 1
SCALE smallint Число цифр справа от десятичной запятой.
RADIX smallint Основание системы счисления числовых типов данных.
NULLABLE smallint Указывает возможность содержать значение NULL.

1 = NULL возможно.
0 = NOT NULL.
REMARKS varchar(254) Это поле всегда возвращается NULL.
COLUMN_DEF nvarchar(4000) Значение столбца по умолчанию.
SQL_DATA_TYPE smallint Значение типа данных SQL в том же виде, что и в поле TYPE дескриптора. Этот столбец совпадает с столбцомDATA_TYPE, за исключением типов данных даты и времени и интервала SQL-92. Этот столбец всегда возвращает значение .
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, используемый расширенными хранимыми процедурами. Дополнительные сведения см. в разделе Типы данных.

1 Дополнительные сведения см. в обзоре ODBC.

Разрешения

Требуется SELECT и VIEW DEFINITION разрешения на схему.

Замечания

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

Примеры

Примеры кода Transact-SQL в этой статье используют AdventureWorks2022 базу данных или AdventureWorksDW2022 пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.

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

USE AdventureWorks2022;
GO

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

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

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

USE AdventureWorksDW2022;
GO

EXEC sp_columns
    @table_name = N'DimEmployee',
    @table_owner = N'dbo';