Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kiểm tra xem một đối tượng là một bảng, dạng xem hoặc thủ tục được lưu trữ trong SQL Server bằng cách sử dụng hàm OBJECTPROPERTY ()

Trong SQL Server, bạn có thể sử dụng OBJECTPROPERTY() chức năng để kiểm tra loại của một đối tượng. Cụ thể hơn, bạn có thể kiểm tra xem đó có phải là một loại cụ thể hay không.

Ví dụ:IsTable thuộc tính cho bạn biết đó có phải là một bảng hay không, IsView thuộc tính cho bạn biết đó có phải là một lượt xem hay không, v.v.

Bài viết này cung cấp một số ví dụ cơ bản để kiểm tra xem một đối tượng có phải là bảng, dạng xem, thủ tục được lưu trữ hay hàm có giá trị bảng hay không.

Ví dụ 1 - Kiểm tra Bảng

Dưới đây là một ví dụ kiểm tra xem một đối tượng có phải là một bảng hay không.

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];

Kết quả:

+-----------+
| IsTable   |
|-----------|
| 1         |
+-----------+

Ở đây, tên đối tượng là Artists và lược đồ là dbo .

Trong trường hợp này, kết quả là 1 , chỉ ra rằng đối tượng trên thực tế là một bảng.

Ví dụ 2 - Kiểm tra Chế độ xem

Dưới đây là một ví dụ kiểm tra xem một đối tượng có phải là một chế độ xem hay không.

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];

Kết quả:

+----------+
| IsView   |
|----------|
| 0        |
+----------+

Trong trường hợp này, tôi đang kiểm tra cùng một đối tượng từ ví dụ trước và vì vậy chúng tôi đã biết đó không phải là một chế độ xem. Do đó, kết quả là 0 , chỉ ra rằng đó không phải là một chế độ xem.

Đây là một ví dụ khác, lần này đối tượng trên thực tế là một chế độ xem:

SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];

Kết quả:

+----------+
| IsView   |
|----------|
| 1        |
+----------+

Lưu ý rằng tôi đã xóa USE Music; một phần, bởi vì tôi đã có trong cơ sở dữ liệu đó. OBJECTPROPERTY() chỉ kiểm tra các đối tượng trong phạm vi lược đồ trong cơ sở dữ liệu hiện tại.

Ví dụ 3 - Câu lệnh có điều kiện

Chúng ta có thể đưa khái niệm này đi một bước xa hơn và kết hợp các ví dụ trước đó thành một IF tuyên bố. Bằng cách đó, chúng ta có thể chạy một câu lệnh duy nhất để tìm ra loại đối tượng.

Dưới đây là các ví dụ cơ bản chỉ xuất ra loại đối tượng.

Bảng

DECLARE @TheObject varchar(255) = 'dbo.Artists';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

Kết quả:

Table

Trong trường hợp này, đối tượng là một bảng.

Dưới đây là các ví dụ khác sử dụng cùng một câu lệnh, nhưng với các loại đối tượng khác nhau.

Xem

DECLARE @TheObject varchar(255) = 'dbo.RockAlbums';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

Kết quả:

View

Thủ tục được lưu trữ

DECLARE @TheObject varchar(255) = 'dbo.uspGetAlbumsByArtist';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

Kết quả:

Stored Procedure

Chức năng định giá bảng

DECLARE @TheObject varchar(255) = 'dbo.ufn_AlbumsByGenre1';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

Kết quả:

Table-valued Function

Bạn có thể thêm nhiều loại vào câu lệnh để làm cho nó hữu ích hơn. Tôi đã liệt kê các đối số OBJECTPROPERTY() chấp nhận trên trang này. Tuy nhiên, không phải tất cả chúng đều là loại đối tượng - có nhiều thuộc tính khác nhau mà bạn có thể kiểm tra.

Để có giải thích đầy đủ về từng thuộc tính, hãy xem tài liệu của Microsoft.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng tổng hợp động trong SQL Server

  2. Oracle tương đương với hàm IsNull () của SQL Server là gì?

  3. Triển khai một Chỉ báo Hiệu suất Máy chủ MS SQL Chung

  4. Tránh đặt tên theo thủ tục do người dùng lưu trữ SP% hoặc SP_%

  5. Kiểm tra trạng thái của tất cả thư cơ sở dữ liệu trong SQL Server (T-SQL)