Di SQL Server, OBJECTPROPERTYEX()
fungsi mengembalikan informasi tentang objek cakupan skema dalam database saat ini.
Fungsi ini melakukan hal yang persis sama dengan OBJECTPROPERTY()
, kecuali bahwa itu mendukung lebih banyak properti, dan nilai pengembaliannya berbeda. OBJECTPROPERTYEX()
fungsi mengembalikan sql_variant ketik, sedangkan OBJECTPROPERTY()
mengembalikan int ketik.
Sintaks
Fungsi menerima dua argumen:ID objek, dan properti yang ingin Anda kembalikan.
OBJECTPROPERTYEX ( id , property )
Contoh 1 – Penggunaan Dasar
Berikut adalah contoh untuk mendemonstrasikan penggunaan dasar fungsi ini.
SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
Hasil:
+----------+ | Result | |----------| | U | +----------+
Dalam hal ini, ada objek dengan ID 885578193
dan itu meja. BaseType dari objek ini adalah U.
Contoh 2 – Memberi Nama Objek
Pada contoh sebelumnya, saya tahu ID objek. Dalam kebanyakan kasus, Anda mungkin hanya mengetahui nama objek, tetapi bukan ID-nya. Dalam kasus seperti itu, Anda dapat menggunakan OBJECT_ID()
berfungsi untuk mendapatkan ID objek, berdasarkan namanya.
Seperti ini:
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
Hasil:
+----------+ | Result | |----------| | U | +----------+
Contoh 3 – Properti Lainnya
Berikut adalah contoh yang mengembalikan lebih banyak properti yang tidak akan Anda dapatkan dengan 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;
Hasil:
+------------+-------------+--------------------+------------------+ | BaseType | IsPrecise | SystemDataAccess | UserDataAccess | |------------+-------------+--------------------+------------------| | IF | 0 | 1 | 1 | +------------+-------------+--------------------+------------------+
Pada saat penulisan, OBJECTPROPERTYEX()
fungsi mendukung 109 properti. Lihat di bawah untuk daftar lengkap properti yang didukung oleh fungsi ini.
Contoh 4 – Dalam Klausa WHERE
Anda dapat menggunakan OBJECTPROPERTYEX()
dalam WHERE
klausa jika diperlukan.
Dalam contoh ini, saya menjalankan dua kueri:yang mengembalikan tabel yang memiliki kunci asing, dan yang mengembalikan tabel yang direferensikan oleh kunci asing.
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;
Hasil:
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)
Daftar Lengkap Properti
Berikut daftar lengkap properti yang didukung oleh OBJECTPROPERTYEX()
fungsi:
- Tipe Dasar
- CnstIsClustKey
- CnstIsColumn
- CnstIsDeleteCascade
- CnstDisabled
- CnstIsNonclustKey
- CnstIsNotRepl
- CnstIsNotTrusted
- CnstIsUpdateCascade
- ExecIsAfterTrigger
- ExecIsAnsiNullsOn
- ExecIsDeleteTrigger
- ExecIsFirstDeleteTrigger
- ExecIsFirstInsertTrigger
- ExecIsFirstUpdateTrigger
- ExecIsInsertTrigger
- ExecIsInsteadOfTrigger
- ExecIsLastDeleteTrigger
- ExecIsLastInsertTrigger
- ExecIsLastUpdateTrigger
- ExecIsQuotedIdentOn
- ExecIsStartup
- ExecIsTriggerDisabled
- ExecIsTriggerNotForRepl
- ExecIsUpdateTrigger
- ExecIsWithNativeCompilation
- HasAfterTrigger
- HasDeleteTrigger
- HasInsertTrigger
- HasInsteadOfTrigger
- HasUpdateTrigger
- IsAnsiNullsOn
- IsCheckCnst
- Adalah Kendala
- Apakah Default
- IsDefaultCnst
- ApakahDeterministik
- Terenkripsi
- Dieksekusi
- IsExtendedProc
- IsForeignKey
- Diindeks
- Dapat Diindeks
- IsInlineFunction
- Sudah Dikirim
- Tepat
- IsPrimaryKey
- AdalahProsedur
- IsQuotedIdentOn
- IsQueue
- IsReplProc
- IsRule
- IsScalarFunction
- IsSchemaBound
- IsSystemTable
- IsSystemVerified
- IsTable
- IsTableFunction
- Pemicu
- IsUniqueCnst
- IsUserTable
- IsView
- Id Pemilik
- Id Skema
- SystemDataAccess
- TableDeleteTrigger
- TableDeleteTriggerCount
- TableFullTextMergeStatus
- TableFullTextBackgroundUpdateIndexOn
- TableFulltextCatalogId
- TableFullTextChangeTrackingOn
- TabelFulltextDocsDiproses
- TabelFulltextFailCount
- TableFulltextItemCount
- TabelFulltextKeyColumn
- TabelFulltextTertundaPerubahan
- TabelFulltextPopulateStatus
- 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
- Akses DataPengguna
- TableHasColumnSet
- Kardinalitas
- TableTemporalType
Lihat dokumentasi Microsoft untuk penjelasan mendetail tentang setiap properti.
Lihat juga OBJECTPROPERTY()
vs OBJECTPROPERTYEX()
untuk penjelasan lebih rinci tentang perbedaan antara kedua fungsi ini.