sp_special_columns (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает оптимальный набор столбцов, уникально идентифицирующих строку таблицы. Также возвращает столбцы, автоматически обновляемые, когда любое значение в строке обновляется транзакцией.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_special_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
Аргументы
[ @table_name = ] N'table_name'
Имя таблицы, используемой для возврата сведений о каталоге. @table_name — sysname без значения по умолчанию. Сопоставление шаблонов подстановочных знаков не поддерживается.
[ @table_owner = ] N'table_owner'
Владелец таблицы, используемой для возврата сведений о каталоге. @table_owner — sysname с значением по умолчаниюNULL
. Сопоставление шаблонов подстановочных знаков не поддерживается. Если @table_owner не задано, применяются правила видимости таблиц по умолчанию базовой системы управления базами данных (СУБД).
В SQL Server, если текущий пользователь владеет таблицей с указанным именем, возвращаются столбцы этой таблицы. Если @table_owner не указан, а текущий пользователь не владеет таблицей указанного @table_name, эта процедура ищет таблицу указанного @table_name , принадлежащей владельцу базы данных. Если таблица существует, возвращаются ее столбцы.
[ @table_qualifier = ] N'table_qualifier'
Имя квалификатора таблицы. @table_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, с значением по умолчанию2
. Это значение означает ODBC версии 2.0. Дополнительные сведения о разнице между ODBC версии 2.0 и ODBC версии 3.0 см. в спецификации ODBC для ODBC SQLSpecialColumns
версии 3.0.
Значения кода возврата
Нет.
Результирующий набор
Имя столбца | Тип данных | Description |
---|---|---|
SCOPE |
smallint | Фактическая область идентификатора строки. Возможные значения: 0 , 1 или 2 . SQL Server всегда возвращается 0 . Это поле всегда возвращает значение.0 = SQL_SCOPE_CURROW . Идентификатор строки гарантированно действителен до тех пор, пока он расположен на этой строке. В дальнейшем повторное выделение с помощью идентификатора строки может не возвращать строку, если строка была обновлена или удалена другой транзакцией.1 = SQL_SCOPE_TRANSACTION . Идентификатор строки гарантируется допустимым в течение текущей транзакции.2 = SQL_SCOPE_SESSION . Идентификатор строки гарантированно действителен на протяжении сеанса (несмотря на границы транзакций). |
COLUMN_NAME |
sysname | Имя столбца для каждого столбца возвращаемого @table_name . Это поле всегда возвращает значение. |
DATA_TYPE |
smallint | Тип данных ODBC SQL. |
TYPE_NAME |
sysname | Имя типа данных, зависящей от источника данных; например, char, varchar, money или text. |
PRECISION |
int | Точность столбца на источнике данных. Это поле всегда возвращает значение. |
LENGTH |
int | Длина в байтах, необходимая для типа данных в двоичной форме в источнике данных, например 10 для char(10), 4 целочисленного числа и 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
эквивалентен SQLSpecialColumns
в ODBC. Возвращаемые результаты упорядочены по SCOPE
.
Разрешения
Требуется SELECT
разрешение на схему.
Примеры
Следующий пример возвращает данные о столбце, которые уникально идентифицируют строки в таблице HumanResources.Department
.
USE AdventureWorks2022;
GO
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';