مشاهده در مقابل رویه ذخیره شده
View ها و رویه های ذخیره شده دو نوع شی پایگاه داده هستند. View ها نوعی پرس و جوهای ذخیره شده هستند که داده ها را از یک یا چند جدول جمع آوری می کنند. در اینجا، نحو ایجاد یک نمای است
ایجاد یا جایگزین نام نمای مشاهده
به عنوان
انتخاب_بیانیه؛
روش ذخیره شده یک مجموعه دستور SQL از پیش کامپایل شده است که در سرور پایگاه داده ذخیره می شود. هر رویه ذخیره شده دارای یک نام فراخوانی است که برای فراخوانی آنها در داخل بسته ها، رویه ها و توابع دیگر استفاده می شود. این نحو (در ORACLE) برای ایجاد یک رویه ذخیره شده،است.
ایجاد یا جایگزینی رویه نام (پارامترها)
است
شروع
بیانات؛
استثنا
Exception_handling
پایان;
مشاهده
A View به عنوان یک جدول مجازی عمل می کند. این دستور انتخاب را در داخل بدنه خود پنهان می کند. این دستور انتخاب می تواند یک دستور بسیار پیچیده باشد که داده ها را از چندین جدول و نما می گیرد. بنابراین، به عبارت دیگر، view یک عبارت select نام دارد که در پایگاه داده ذخیره می شود. برای پنهان کردن منطق پشت روابط جدول از دید کاربران نهایی می توان از یک View استفاده کرد. از آنجایی که یک view نتیجه یک کوئری ذخیره شده است، هیچ داده ای را نگه نمی دارد. داده ها را از جداول پایه جمع آوری می کند و نشان می دهد. نماها نیز نقش مهمی در امنیت داده ها دارند. هنگامی که صاحب جدول نیاز دارد فقط مجموعه ای از داده ها را به کاربران نهایی نشان دهد، ایجاد یک نما راه حل خوبی است. بازدیدها را می توان به دو دسته تقسیم کرد
- نماهای قابل بهروزرسانی (مشاهدههایی که میتوانند برای درج، بهروزرسانی و حذف استفاده شوند)
- نماهای غیرقابل بهروزرسانی (مشاهدههایی که نمیتوان از آنها برای درج، بهروزرسانی و حذف استفاده کرد)
نماهای قابل بهروزرسانی نمیتواند شامل موارد زیر باشد،
Set Operators (INTERSECT، MINUS، UNION، UNION ALL)
متمایز
توابع جمع گروه (AVG، COUNT، MAX، MIN، SUM، و غیره)
گروه بر اساس بند
سفارش بر اساس بند
اتصال با بند
شروع با بند
عبارت مجموعه در فهرست انتخابی
پرسمان فرعی در فهرست انتخابی
پیوستن به پرسش
رویه ذخیره شده
رویه های ذخیره شده بلوک های برنامه نویسی نامیده می شوند. آنها باید یک نام داشته باشند. رویه های ذخیره شده پارامترها را به عنوان ورودی کاربر می پذیرند و طبق منطق پشت رویه پردازش می کنند و نتیجه را می دهند (یا یک عمل خاص را انجام می دهند). اعلانهای متغیر، تخصیص متغیرها، دستورات کنترل، حلقهها، کوئریهای SQL و سایر فراخوانیهای توابع/روش/بسته میتوانند در بدنه رویهها باشند.
تفاوت بین View و Stored Procedure چیست؟
اجازه دهید تفاوت بین این دو را ببینیم.
• نماها مانند جداول مجازی عمل می کنند. آنها را می توان مستقیماً در نزدیکی پرس و جوهای SQL (انتخاب) استفاده کرد، اما رویه ها را نمی توان در نزدیکی پرس و جوها استفاده کرد.
• نماها فقط یک دستور select به عنوان بدنه خود دارند، اما رویه ها می توانند اعلان های متغیر، تخصیص متغیرها، دستورات کنترل، حلقه ها، پرس و جوهای SQL و سایر توابع/روش ها/ فراخوانی های بسته را به عنوان بدنه خود داشته باشند.
• Procedure پارامترها را برای اجرا می پذیرد، اما نماها نمی خواهند پارامترها اجرا شوند.
• انواع رکورد را می توان از نماها با استفاده از % ROWTYPE ایجاد کرد، اما با استفاده از رویه ها، انواع رکورد را نمی توان ایجاد کرد.
• نکات SQL را می توان در داخل عبارت view select برای بهینه سازی طرح اجرا استفاده کرد، اما نکات SQL را نمی توان در رویه های ذخیره شده استفاده کرد.
• DELETE، INSERT، UPDATE، SELECT، FLASHBACK، و DEBUG را می توان در نماها اعطا کرد، اما فقط EXECUTE و DEBUG را می توان در رویه ها اعطا کرد.