
گاهی ما در برنامه ای با حجم دیتابیس بالا می خواهیم بدانیم آیا ستونی در جدولی وجود دارد یا نه؟
در حالت معمول اولین فکری که به ذهن یک برنامه نویس ممکن است برسد شاید این باشد که یک stored procedure بنویسد و در آن تک تک جداول را بررسی کند . این روش ممکن است در دیتابیس های کوجک مفید باشد اما وقتی تعداد جداول و ستونهای دیتابیس زیاد شود این راه حل جوابگو نیست . اما بکمک راه حلی که امروز برای شما معرفی می کنیم فقط بکمک یک تابع ساده می توانید این کار را انجام دهید .
CREATE FUNCTION Axfn_ColumnExists (
@TableName VARCHAR(100)
,@ColumnName VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @Result VARCHAR(100);
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = @TableName
AND COLUMN_NAME = @ColumnName
)
BEGIN
SET @Result = ‘Already Exsits’
END
ELSE
BEGIN
SET @Result = ‘Not Available, You can create now!’
END
RETURN (@Result)
END
GO
SELECT dbo.Axfn_ColumnExists(‘TestTable’, ‘ColumnName’)
همانطور که مشاهده کردید ما تابعی با ۲ پارامتر تعریف کردیم که پارامتر اول نام جدول و پارامتر دوم نام ستون مورد جستجو است و نتیجه تابع را هم بصورت رشته ای تعریف کردیم که اگر ستون وجود داشت پیام مربوطه را بدهد . دقت کنید ما برای یافتن ستون مورد نظر در قسمت INFORMATION_SCHEMA دنبال ستون گشتیم.
حال سوالی که در اینجا پیش میاد این است که INFORMATION_SCHEMA چیست ؟
در SQL SERVER 2005 و ورژن های جدیدتر یک بانک اطلاعاتی دیگر در کنار بانک اطلاعاتی ایجاد شده توسط خودمان وجود دارد و برای دسترسی به پایگاه داده metadata می باشد که حاوی اطلاعاتی از قبیل نام دیتابیس ، جداول آن ، نوع داده های ستون ، حق دسترسی و غیره است . در این بانک اطلاعاتی اطلاعات دیگر بانک های اطلاعاتی موجود در سرور نیز نگهداری می شود و بصورت مجازی و فقط برای دریافت اطلاعات کلیه بانک های موجود در سرور ایجاد شده است و فقط اطلاعات آن از نوع خواندنی است نه نوشتنی .
دستور SELECT 1 هم به این معناست که فقط یک ستون را جستجو می کند . ما هم می توانیم از نام ستون استفاده کنیم و هم از شماره به عنوان تعداد ستون .
مجموعه مطالب
آخرین مطالب
- داغترین ترندهای گوگل در ۲۰۲۱: سریال Squid Game و ورزش کریکت در صدر
- قانون جدید توییتر: تصاویر افراد را بدون رضایت آنها منتشر نکنید.
- اپل در بلک فرایدی به مشتریان خود کارت خرید ۲۵ تا ۲۰۰ دلاری هدیه میدهد.
- توسعه هوش مصنوعی ۶ میلیون دلاری که لهجه را در حین مکالمه تغییر میدهد
- کاهش تعرفه اینترنت رایتل بدون خرید بسته به مناسب سالگرد فعالیت این اپراتور
- آپدیت جدید Google Messages نمایش ایموجی واکنشهای iMessage را ممکن کرد
- ایموجی های جدید مایکروسافت بهصورت دو بعدی برای ویندوز ۱۱ منتشر شدند
- واتساپ قابلیت کنترل سرعت پخش پیامهای صوتی فوروارد شده را آزمایش میکند
- ساخت استیکر در نسخه بتای پیام رسان واتساپ دسکتاپ ممکن شد
- دستاورد بزرگ رآکتور همجوشی هستهای کره جنوبی: حفظ ۳۰ ثانیهای پلاسمای ۱۰۰ میلیون درجهای
- تراشه ۳ نانومتری AMD احتمالا برای اولین بار توسط سامسونگ تولید میشود
- وزارت اطلاعات هشدار داد: از ارائه مشخصات هویتی به وبسایتهای جعلی خودداری کنید.
- اینستاگرام استفاده از ویدیوهای سلفی برای احراز هویت را آغاز کرد
- واتساپ دسکتاپ و تحت وب چگونه بدون نیاز به اتصال به گوشی مورد استفاده قرا میگیرد؟
- ایلان ماسک ۹۳۰ میلیون دلار دیگر از سهام تسلا را فروخت
- انویدیا برای مقابله با گرمایش جهانی با هوش مصنوعی زمین دیجیتال توسعه میدهد
- گوگل روی امکان ویرایش اسکرین شاتها در مرورگر کروم نسخه وب کار میکند.
- امنیت وردپرس – بخش چهارم: سؤالات متداول درباره امنیت وبسایت وردپرس
- امنیت وردپرس – بخش سوم: ۸ نکته ضروری در تامین امنیت وردپرس
- امنیت وردپرس – بخش دوم: معرفی بهترین افزونه های امنیتی وردپرس