Bạn có thể sử dụng OBJECTPROPERTY()
trong SQL Server để tìm xem một đối tượng có phải là một dạng xem hay không.
Hàm này chấp nhận hai tham số:ID đối tượng và thuộc tính mà bạn đang kiểm tra.
Do đó, bạn có thể chuyển ID đối tượng làm đối số đầu tiên và IsView
là hàm thứ hai và hàm sẽ trả về 1
hoặc 0
tùy thuộc vào việc đó có phải là một lượt xem hay không.
Giá trị trả về của 1
có nghĩa là nó là một chế độ xem và giá trị 0
nghĩa là không phải vậy.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ nhanh để chứng minh.
USE Music; SELECT OBJECTPROPERTY(1525580473, 'IsView') AS [IsView];
Kết quả:
+----------+ | IsView | |----------| | 1 | +----------+
Trong trường hợp này, Âm nhạc cơ sở dữ liệu có một đối tượng với ID được cung cấp và đó là một dạng xem.
Ví dụ 2 - Lấy ID đối tượng
Nếu bạn biết tên của đối tượng, nhưng không biết ID của nó, bạn có thể sử dụng OBJECT_ID()
chức năng truy xuất ID dựa trên tên của nó.
Ví dụ:
SELECT OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Kết quả:
+----------+ | IsView | |----------| | 1 | +----------+
Trong trường hợp này, tôi đã kiểm tra cùng một đối tượng từ ví dụ trước.
Đây là một lần nữa với đầu ra ID riêng biệt.
SELECT OBJECT_ID('RockAlbums') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Kết quả:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 1525580473 | 1 | +-------------+----------+
Ví dụ 3 - Khi Đối tượng KHÔNG phải là Dạng xem
Đây là những gì sẽ xảy ra khi đối tượng không phải là một chế độ xem.
SELECT OBJECTPROPERTY(885578193, 'IsView') AS [IsView];
Kết quả:
+----------+ | IsView | |----------| | 0 | +----------+
Trong trường hợp này, cơ sở dữ liệu không trên thực tế có một đối tượng với ID đó, nhưng đối tượng thực sự là một bảng, vì vậy tôi nhận được kết quả âm.
Ở đây, nó lại sử dụng OBJECT_ID()
.
SELECT OBJECT_ID('Artists') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsView') AS [IsView];
Kết quả:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 885578193 | 0 | +-------------+----------+
Ví dụ 4 - Đối tượng không tồn tại
SQL Server giả định rằng ID đối tượng nằm trong ngữ cảnh cơ sở dữ liệu hiện tại. Nếu bạn chuyển một ID đối tượng từ một cơ sở dữ liệu khác, bạn sẽ nhận được kết quả NULL hoặc bạn sẽ nhận được kết quả không chính xác.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsView') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsView') AS [11111111];
Kết quả:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
Trong trường hợp này, cơ sở dữ liệu không chứa các đối tượng có tên hoặc ID đó, và vì vậy tôi nhận được kết quả NULL.
Bạn cũng sẽ gặp lỗi NULL hoặc nếu bạn không có quyền xem đối tượng.