sql >> Databáze >  >> RDS >> Sqlserver

Zkontrolujte, zda je objekt uloženou procedurou pomocí OBJECTPROPERTY() na serveru SQL Server

V SQL Server můžete použít OBJECTPROPERTY() funkcí zjistit, zda je objekt uloženou procedurou.

Tato funkce přijímá dva parametry:ID objektu a vlastnost, pro kterou ji hledáte.

Proto můžete předat ID objektu jako první argument a IsProcedure jako druhý a funkce vrátí buď 1 nebo 0 v závislosti na tom, zda se jedná o uloženou proceduru.

Vrácená hodnota 1 znamená, že je uložená procedura a hodnota 0 znamená, že není.

Příklad 1 – Základní použití

Zde je rychlý příklad k demonstraci.

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(466100701, 'IsProcedure') AS [IsProcedure];

Výsledek:

+---------------+
| IsProcedure   |
|---------------|
| 1             |
+---------------+

V tomto případě Hudba databáze má objekt s poskytnutým ID a je to ve skutečnosti uložená procedura.

Příklad 2 – Získání ID objektu

Pokud znáte název objektu, ale neznáte jeho ID, můžete použít OBJECT_ID() funkce pro načtení ID na základě jeho názvu.

Příklad:

SELECT OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];

Výsledek:

+---------------+
| IsProcedure   |
|---------------|
| 1             |
+---------------+

V tomto případě jsem zkontroloval stejný objekt z předchozího příkladu.

Zde je to opět s výstupem ID samostatně.

SELECT 
  OBJECT_ID('Integration.GetLineageKey') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];

Výsledek:

+-------------+---------------+
| Object ID   | IsProcedure   |
|-------------+---------------|
| 466100701   | 1             |
+-------------+---------------+

Příklad 3 – když objekt NENÍ uložená procedura

Zde je to, co se stane, když objekt není uložená procedura.

SELECT OBJECTPROPERTY(1013578649, 'IsProcedure') AS [IsProcedure];

Výsledek:

+---------------+
| IsProcedure   |
|---------------|
| 0             |
+---------------+

V tomto případě databáze dělá ve skutečnosti mají objekt s tímto ID, ale objekt je ve skutečnosti tabulka, takže dostanu negativní výsledek.

Zde je to opět pomocí OBJECT_ID() .

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsProcedure') AS [IsProcedure];

Výsledek:

+-------------+---------------+
| Object ID   | IsProcedure   |
|-------------+---------------|
| 1013578649  | 0             |
+-------------+---------------+

Příklad 4 – Objekt neexistuje

SQL Server předpokládá, že ID objektu je v aktuálním kontextu databáze. Pokud předáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsProcedure') AS [NonExistentObject],
  OBJECTPROPERTY(11111111, 'IsProcedure') AS [11111111];

Výsledek:

+---------------------+------------+
| NonExistentObject   | 11111111   |
|---------------------+------------|
| NULL                | NULL       |
+---------------------+------------+

V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID.


  1. Seskupte výsledky dotazů podle měsíce a roku v postgresql

  2. Jak vytvořit tabulku Postgres s jedinečným kombinovaným primárním klíčem?

  3. MySQL MONTHNAME() z čísel

  4. Přidejte hodiny k časové hodnotě v PostgreSQL