Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sprawdź, czy obiekt jest tabelą, widokiem lub procedurą składowaną w SQL Server za pomocą funkcji OBJECTPROPERTY()

W SQL Server możesz użyć OBJECTPROPERTY() funkcja sprawdzania typu obiektu. Dokładniej, możesz sprawdzić, czy jest to określony typ.

Na przykład IsTable Właściwość informuje, czy jest to tabela, IsView właściwość informuje, czy jest to widok itp.

W tym artykule przedstawiono kilka podstawowych przykładów sprawdzających, czy obiekt jest tabelą, widokiem, procedurą składowaną lub funkcją z wartością przechowywaną w tabeli.

Przykład 1 – Sprawdź tabelę

Oto przykład, który sprawdza, czy obiekt jest tabelą.

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

Wynik:

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

Tutaj nazwa obiektu to Artists a schemat to dbo .

W tym przypadku wynikiem jest 1 , co wskazuje, że obiekt jest w rzeczywistości tabelą.

Przykład 2 – Sprawdź widok

Oto przykład, który sprawdza, czy obiekt jest widokiem.

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

Wynik:

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

W tym przypadku sprawdzam ten sam obiekt z poprzedniego przykładu, więc już wiemy, że to nie jest widok. Dlatego wynik to 0 , co oznacza, że ​​nie jest to widok.

Oto kolejny przykład, tym razem obiekt jest w rzeczywistości widokiem:

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

Wynik:

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

Zauważ, że usunąłem USE Music; część, ponieważ jestem już w tej bazie danych. OBJECTPROPERTY() sprawdza tylko obiekty o zakresie schematu w bieżącej bazie danych.

Przykład 3 – Instrukcja warunkowa

Możemy pójść o krok dalej i włączyć poprzednie przykłady do IF oświadczenie. W ten sposób możemy uruchomić pojedynczą instrukcję, aby dowiedzieć się, jakiego typu jest obiekt.

Poniżej znajdują się podstawowe przykłady, które po prostu wyświetlają typ obiektu.

Tabela

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.';

Wynik:

Table

W tym przypadku obiektem jest stół.

Oto więcej przykładów, w których użyto tej samej instrukcji, ale z różnymi typami obiektów.

Wyświetl

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.';

Wynik:

View

Procedura przechowywana

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.';

Wynik:

Stored Procedure

Funkcja o wartościach tabeli

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.';

Wynik:

Table-valued Function

Możesz dodać więcej typów do instrukcji, aby była bardziej użyteczna. Wymieniłem argumenty, które OBJECTPROPERTY() akceptuje na tej stronie. Nie wszystkie z nich są jednak typami obiektów – istnieje wiele różnych właściwości, które możesz sprawdzić.

Pełne wyjaśnienie każdej właściwości znajduje się w dokumentacji firmy 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. Do czego służą nawiasy kwadratowe [] w instrukcjach sql?

  2. SQL Server 2014:natywne szyfrowanie kopii zapasowych

  3. 4 sposoby konwersji liczby na procent w SQL Server (T-SQL)

  4. Jak wykonać zapytanie przekazujące INSERT w programie SQL Server

  5. Bazy danych systemu SQL Server — konserwacja Tempdb