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


sp_special_columns (Transact-SQL)

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

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

Синтаксис

sp_special_columns [ @table_name = ] 'table_name'   
     [ , [ @table_owner = ] 'table_owner' ] 
     [ , [ @qualifier = ] 'qualifier' ] 
     [ , [ @col_type = ] 'col_type' ] 
     [ , [ @scope = ] 'scope' ]
     [ , [ @nullable = ] 'nullable' ] 
     [ , [ @ODBCVer = ] 'ODBCVer' ] 
[ ; ]

Аргументы

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

  • [ @table_owner =] 'table_owner'
    Владелец таблицы, используемой для возврата данных о каталоге. Аргумент owner имеет тип sysname и значение по умолчанию NULL. Сопоставление по шаблону не поддерживается. Если аргумент owner не задан, то применяются правила видимости таблиц по умолчанию базовой СУБД.

    В SQL Server, если текущий пользователь является владельцем таблицы с указанным именем, возвращаются ее столбцы. Если аргумент owner не указан, а текущий пользователь не является владельцем таблицы с указанным аргументом name, данная процедура производит поиск таблицы с указанным аргументом name, владельцем которой является владелец базы данных. Если таблица существует, возвращаются ее столбцы.

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

  • [ @col_type =] 'col_type'
    Тип столбца. Аргумент col_type имеет тип char(1) и значение по умолчанию R. Тип R возвращает оптимальный столбец или набор столбцов, которые, получая значения из столбца или столбцов, позволяют уникально идентифицировать любую строку в указанной таблице. Столбец может быть либо псевдостолбцом, специально созданным для этой цели, либо столбцом или столбцами любого уникального индекса таблицы. Тип V возвращает столбец или столбцы в указанной таблице, которые источник данных обновляет автоматически, когда любое значение в строке обновляется транзакцией.

  • [ @scope =] 'scope'
    Минимально требуемая область ROWID. Аргумент scope имеет тип char(1) и значение по умолчанию T. Область C указывает, что ROWID действителен только в случае, если располагается в этой строке. Область T указывает, что ROWID действителен для транзакции.

  • [ @nullable =] 'nullable'
    Определяет, допускают ли специальные столбцы значение NULL. Аргумент nullable имеет тип char(1) и значение по умолчанию U. O указывает специальные столбцы, которые не допускают значения NULL. U указывает столбцы, частично допускающие значения NULL.

  • [ @ODBCVer =] 'ODBCVer'
    Используемая версия ODBC. Аргумент ODBCVer имеет тип int(4) и значение 2 по умолчанию. Это значение соответствует версии ODBC 2.0. Дополнительные сведения о различиях между ODBC 2.0 и ODBC 3.0 см. в спецификации ODBC SQLSpecialColumns для ODBC 3.0.

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

Нет

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

Имя столбца

Тип данных

Описание

SCOPE

smallint

Фактическая область идентификатора строки. Может быть 0, 1 или 2. SQL Server всегда возвращает значение 0. Это поле всегда возвращает значение.

0 = SQL_SCOPE_CURROW. Идентификатор строки гарантированно действителен до тех пор, пока он расположен на этой строке. Проведенная позднее повторная выборка с использованием идентификатора строки может не вернуть строку, если строка была обновлена или удалена другой транзакцией.

1 = SQL_SCOPE_TRANSACTION. Идентификатор строки гарантированно действителен на протяжении текущей транзакции.

2 = SQL_SCOPE_SESSION. Идентификатор строки гарантированно действителен на протяжении сеанса (несмотря на границы транзакций).

COLUMN_NAME

sysname

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

DATA_TYPE

smallint

Тип данных ODBC SQL.

TYPE_NAME

sysname

Имя типа данных зависимых от источника данных; например char, varchar, money или text.

PRECISION

Int

Точность столбца на источнике данных. Это поле всегда возвращает значение.

LENGTH

Int

Длина в байтах, требуемая для типа данных в двоичной форме в источнике данных; например 10 для char(10), 4 для integer и 2 для smallint.

SCALE

smallint

Масштаб столбца в источнике данных. Для тех типов данных, для которых масштаб не применим, возвращается значение NULL.

PSEUDO_COLUMN

smallint

Указывает, является ли столбец псевдостолбцом. SQL Server всегда возвращает 1.

0 = SQL_PC_UNKNOWN

1 = SQL_PC_NOT_PSEUDO

2 = SQL_PC_PSEUDO

Замечания

Хранимая процедура sp_special_columns эквивалентна ODBC-функции SQLSpecialColumns. Возвращенные результаты сортируются по столбцу SCOPE.

Разрешения

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

Примеры

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

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