خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از تابع ()SCHEMA_ID در SQL Server

استفاده از تابع ()SCHEMA_ID در SQL Server
در SQL Server می توانید از تابع SCHEMA_ID برای بازگرداندن ID یک schema استفاده کنید. این تابع بر عکس تابع SCHEMA_ NAME عمل می کند. نام SCHEMA را به تابع مذکور پاس دهید و در خروجی ID آن را می توانید تحویل بگیرید.

نرم افزار سامانه مودیان راهکار
اگر به تابع مذکور نام SCHEMA را ندهید، شناسه default schema را در خروجی برمی گرداند.



SELECT SCHEMA_ID() AS Result;

+----------+
| Result |
|----------|
| 1 |
+----------+

همانطور که مشاهده می کنید، هیچ نام SCHEMA ای به تابع مذکور پاس داده نشده و از این رو شناسه SCHEMA پیشفرض برگردانده شده است.
همین مثال فوق را با پاس دادن نام SCHEMA دنبال می کنیم:

SELECT
SCHEMA_ID() AS [Schema ID],
SCHEMA_ NAME() AS [Schema Name];

+-------------+---------------+
| Schema ID | Schema Name |
|-------------+---------------|
| 1 | dbo |
+-------------+---------------+

اگر به تابع SCHEMA_ID، نام SCHEMA را پاس دهید، ID مربوطه بدان SCHEMA برگردانده می شود.

SELECT SCHEMA_ID('Dimension') AS Result;

+----------+
| Result |
|----------|
| 6 |
+----------+

در مثال فوق صراحتا ID همان SCHEMA که نام آن به تابع مربوطه پاس داده شد، بر میگردد.
خب، مثال قبلی در یک دیتابیس اجرا شد و اگر به دیتابیس دیگری سوئیچ کنید، شاید ID متفاوت و شاید اصلا هیچ چیزی به عنوان خروجی بر نگردد.

USE WideWorldImportersDW;
SELECT SCHEMA_ID('Dimension') AS Result;

USE Music;
SELECT SCHEMA_ID('Dimension') AS Result;

Changed database context to 'WideWorldImportersDW'.
+----------+
| Result |
|----------|
| 6 |
+----------+
(1 row affected)
Changed database context to 'Music'.
+----------+
| Result |
|----------|
| NULL |
+----------+
(1 row affected)

هیچ شمایی با نام Dimension در دیتابیس دوم وجود ندارد و از این مقدار NULL در خروجی برگشت داده شد.
برای فیلتر کردن نتایج خروجی از WHERE هم می توانید استفاده کنید. در SQL Server بسیاری از View های سیستمی دارای ستون schema_id هستند که ID مربوط به schema ها در آن ذخیره می شود. بنابراین اگر می خواهید نتایج را با استفاده از schema فیلتر کنید ، باید شناسه schema را بدانید. در اینجاست که SCHEMA_ID به کمک شما می آید.

USE WideWorldImportersDW;
SELECT
name,
type_desc
FROM sys.objects
WHERE schema_id = SCHEMA_ID('Dimension');

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)


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز