In SQL Server kunt u de SCHEMA_ID()
. gebruiken functie om de ID van een bepaald schema te retourneren. Meer specifiek retourneert deze functie de schema-ID die is gekoppeld aan een schemanaam.
Het is als SCHEMA_NAME()
behalve dat het de ID van het schema retourneert in plaats van de naam (en het accepteert de parameter name in plaats van ID).
Als u geen schemanaam doorgeeft aan de functie, wordt de ID van het standaardschema van de aanroeper geretourneerd.
Voorbeeld 1 – Standaardschema retourneren
Hier is een voorbeeld dat de ID van het standaardschema van de beller retourneert.
SELECT SCHEMA_ID() AS Result;
Resultaat:
+----------+ | Result | |----------| | 1 | +----------+
Dit retourneert de ID van het standaardschema van de beller omdat ik niet expliciet een andere schemanaam heb opgegeven.
Hier is het weer, samen met de naam van het schema.
SELECT SCHEMA_ID() AS [Schema ID], SCHEMA_NAME() AS [Schema Name];
Resultaat:
+-------------+---------------+ | Schema ID | Schema Name | |-------------+---------------| | 1 | dbo | +-------------+---------------+
Voorbeeld 2 – Specificeer een ander schema
In dit voorbeeld geef ik expliciet een schemanaam door aan de functie.
SELECT SCHEMA_ID('Dimension') AS Result;
Resultaat:
+----------+ | Result | |----------| | 6 | +----------+
Dit vertelt me dat het schema met de naam Dimension een ID van 6 heeft.
Voorbeeld 3 – Van database wisselen
Het vorige voorbeeld werd toevallig uitgevoerd in een database met een schema met de naam Dimension. Als ik overschakel naar een andere database, krijg ik mogelijk een andere schema-ID of helemaal geen ID.
Hier is een voorbeeld van wat ik bedoel.
USE WideWorldImportersDW; SELECT SCHEMA_ID('Dimension') AS Result; USE Music; SELECT SCHEMA_ID('Dimension') AS Result;
Resultaat:
Changed database context to 'WideWorldImportersDW'. +----------+ | Result | |----------| | 6 | +----------+ (1 row affected) Changed database context to 'Music'. +----------+ | Result | |----------| | NULL | +----------+ (1 row affected)
Het tweede resultaat retourneert NULL
omdat er geen schema met de naam Dimensie in de muziekdatabase staat.
Voorbeeld 4 – In een WHERE-clausule
SCHEMA_ID()
gebruiken in een WHERE
clausule kan een handige manier zijn om de resultaten op schema te filteren.
In SQL Server gebruiken verschillende systeemweergaven een schema_id
kolom om de schema-ID op te slaan, maar niet de schemanaam. Daarom moet u de schema-ID weten als u de resultaten op schema wilt filteren. Dat is waar SCHEMA_ID()
kan erg handig zijn. Het voorkomt dat u een join hoeft te doen op de sys.schemas
bekijken om de naam van het schema te bepalen.
Hier is een voorbeeld van het gebruik van SCHEMA_ID()
in een WHERE
clausule.
USE WideWorldImportersDW; SELECT name, type_desc FROM sys.objects WHERE schema_id = SCHEMA_ID('Dimension');
Resultaat:
Changed database context to 'WideWorldImportersDW'. +----------------------------------------------------+------------------------+ | name | type_desc | |----------------------------------------------------+------------------------| | City | USER_TABLE | | PK_Dimension_City | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_City_City_Key | DEFAULT_CONSTRAINT | | Customer | USER_TABLE | | PK_Dimension_Customer | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Customer_Customer_Key | DEFAULT_CONSTRAINT | | Date | USER_TABLE | | PK_Dimension_Date | PRIMARY_KEY_CONSTRAINT | | Employee | USER_TABLE | | PK_Dimension_Employee | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Employee_Employee_Key | DEFAULT_CONSTRAINT | | Payment Method | USER_TABLE | | PK_Dimension_Payment_Method | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Payment_Method_Payment_Method_Key | DEFAULT_CONSTRAINT | | Stock Item | USER_TABLE | | PK_Dimension_Stock_Item | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Stock_Item_Stock_Item_Key | DEFAULT_CONSTRAINT | | Supplier | USER_TABLE | | PK_Dimension_Supplier | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Supplier_Supplier_Key | DEFAULT_CONSTRAINT | | Transaction Type | USER_TABLE | | PK_Dimension_Transaction_Type | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Transaction_Type_Transaction_Type_Key | DEFAULT_CONSTRAINT | +----------------------------------------------------+------------------------+ (23 rows affected)