Trong SQL Server, COLUMNPROPERTY()
hàm trả về thông tin cột hoặc thông số.
Ví dụ:bạn có thể sử dụng nó để trả về thông tin về một cột trong bảng, một tham số cho một thủ tục được lưu trữ, v.v.
Nó chấp nhận ba đối số:ID của bảng hoặc thủ tục, cột hoặc thông số áp dụng và thuộc tính bạn muốn biết thông tin.
Cú pháp
Cú pháp như sau:
COLUMNPROPERTY ( id , column , property )
Ví dụ 1 - Truy vấn một bảng
Trong ví dụ này, tôi nhận được thông tin về một cột trong bảng.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Kết quả:
+----------+ | Result | |----------| | 0 | +----------+
Trong trường hợp này, cột ArtistId không cho phép giá trị NULL.
Hãy chuyển sang một cột khác:
SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
Kết quả:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Trong trường hợp này, cột ActiveFrom không cho phép các giá trị NULL. Nó cũng có độ chính xác là 10 và thang điểm là 0.
Bạn sẽ nhận thấy rằng tôi sử dụng OBJECT_ID()
hàm trả về ID của bảng. Nếu không có chức năng này, tôi cần biết ID (hoặc tôi cần thực hiện một truy vấn khác chỉ để lấy ID).
Đây là nội dung OBJECT_ID()
trả về trong ví dụ trên:
SELECT OBJECT_ID('Artists') AS Result;
Kết quả:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Vì vậy, bây giờ chúng tôi đã biết ID, chúng tôi có thể chuyển ID đó vào COLUMNPROPERTY()
chức năng thay thế:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Kết quả:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Ví dụ 2 - Truy vấn một thủ tục
Trong ví dụ này, tôi nhận được thông tin về một tham số của một thủ tục được lưu trữ.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Kết quả:
+----------+ | Result | |----------| | 0 | +----------+
Vì vậy, nó hoàn toàn giống nhau về cú pháp. Trong trường hợp này, tham số @ArtistId
không phải là tham số đầu ra.
Danh sách đầy đủ các tùy chọn
Đây là danh sách đầy đủ các đối số mà bạn có thể chuyển tới COLUMNPROPERTY()
tại thời điểm viết bài:
- AllowsNull
- ColumnId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsComputed
- IsCursorType
- IsDeterministic
- IsFulltextIndexed
- IsHidden
- IsIdentity
- IsIdNotForRepl
- Có thể lập chỉ mục
- IsOutParam
- IsPrecise
- IsRowGuidCol
- IsSparse
- IsSystemVerified
- IsXmlIndexable
- Độ chính xác
- Quy mô
- StatisticalSemantics
- SystemDataAccess
- UserDataAccess
- Công dụngAnsiTrim
Xem tài liệu của Microsoft để biết giải thích chi tiết về từng thuộc tính.
Cũng xem OBJECTPROPERTYEX()
cho một hàm tương tự trả về thông tin về các đối tượng trong phạm vi lược đồ thay vì cơ sở dữ liệu và DATABASEPROPERTYEX()
trả về thông tin thuộc tính cho cơ sở dữ liệu.