Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как OBJECTPROPERTYEX() работи в SQL Server

В SQL Server, OBJECTPROPERTYEX() функцията връща информация за обекти с обхват на схема в текущата база данни.

Тази функция прави точно същото като OBJECTPROPERTY() , с изключение на това, че поддържа повече свойства и връщаната стойност е различна. OBJECTPROPERTYEX() функцията връща sql_variant тип, докато OBJECTPROPERTY() връща int тип.

Синтаксис

Функцията приема два аргумента:ID на обекта и свойството, което искате да бъде върнато.

OBJECTPROPERTYEX ( id , property )

Пример 1 – Основна употреба

Ето пример за демонстриране на основното използване на тази функция.

SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| U        |
+----------+

В този случай има обект с идентификатор 885578193 и това е маса. Основният тип на този обект е U.

Пример 2 – Именуване на обекта

В предишния пример знаех идентификатора на обекта. В повечето случаи вероятно ще знаете само името на обекта, но не и неговия идентификатор. В такива случаи можете да използвате OBJECT_ID() функция за получаване на идентификатора на обекта въз основа на неговото име.

Като това:

SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| U        |
+----------+

Пример 3 – Още свойства

Ето пример, който връща повече от свойствата, които няма да ви бъдат върнати с OBJECTPROPERTY() .

USE WideWorldImportersDW;
DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns');
SELECT 
  OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType,
  OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise,
  OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess,
  OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;

Резултат:

+------------+-------------+--------------------+------------------+
| BaseType   | IsPrecise   | SystemDataAccess   | UserDataAccess   |
|------------+-------------+--------------------+------------------|
| IF         | 0           | 1                  | 1                |
+------------+-------------+--------------------+------------------+

Към момента на писане, OBJECTPROPERTYEX() функцията поддържа 109 свойства. Вижте по-долу за пълен списък на свойствата, поддържани от тази функция.

Пример 4 – В клауза WHERE

Можете да използвате OBJECTPROPERTYEX() в WHERE клауза, ако е необходимо.

В този пример изпълнявам две заявки:едната, която връща таблици, които имат външен ключ, и една, която връща таблици, които са реферирани от външен ключ.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1;

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;

Резултат:

Changed database context to 'Music'.
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Albums  |
+----------+---------+
(2 rows affected)
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Genres  |
| dbo      | Country |
+----------+---------+
(3 rows affected)

Пълен списък със свойства

Ето пълен списък на свойствата, поддържани от OBJECTPROPERTYEX() функция:

  • Базов тип
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • Има DeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • По подразбиране
  • IsDefaultCnst
  • Едетерминистично
  • Шифровано
  • Изпълнено
  • IsExtendedProc
  • IsForeignKey
  • Индексирано е
  • Индексира се
  • IsInlineFunction
  • Изпратено е MSS
  • Е точен
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • Опашка за търсене
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • SystemVerified
  • Стабилно
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • UserDataAccess
  • TableHasColumnSet
  • Кардиналност
  • TableTemporalType

Вижте документацията на Microsoft за подробно обяснение на всяко свойство.

Вижте също OBJECTPROPERTY() срещу OBJECTPROPERTYEX() за по-подробно обяснение на разликите между тези две функции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво се случва с незавършена транзакция, когато връзката е затворена?

  2. Как да използвам каскадно изтриване със SQL Server?

  3. Връщане на номера на дял за всеки ред при запитване на разделена таблица в SQL Server (T-SQL)

  4. DECODE( ) функция в SQL Server

  5. съхранени процедури с sqlAlchemy