يوفر Microsoft SQL Server آلية الإجراء المخزن لتبسيط عملية تطوير قاعدة البيانات عن طريق تجميع عبارات SQL للعمليات إلى كتل يمكن إدارتها. يتم تقدير الإجراءات المخزنة من قبل معظم مطوري SQL Server الذين يجدون كفاءة ومزايا الأمان التي يجنيونها تستحق الاستثمار في الوقت المناسب.
فوائد استخدام الإجراءات المخزنة
لماذا يجب على المطور استخدام الإجراءات المخزنة؟
فيما يلي الفوائد الأساسية لهذه التقنية:
- التنفيذ المحولة مسبقا: يجمع SQL Server كل إجراء مخزن مرة واحدة ومن ثم يعيد استخدام خطة التنفيذ. هذا يؤدي إلى زيادة أداء هائلة عند استدعاء الإجراءات المخزنة بشكل متكرر.
- انخفاض حركة مرور العميل / الخادم: إذا كان النطاق الترددي للشبكة مصدر قلق في البيئة الخاصة بك ، فسوف يكون من دواعي سرورك أن تعلم أن الإجراءات المخزنة يمكن أن تقلل من استعلامات SQL الطويلة إلى سطر واحد يتم نقله عبر السلك.
- إعادة الاستخدام الفعال للكود والبرمجة التجريدية: يمكن استخدام الإجراءات المخزنة بواسطة عدة مستخدمين وبرامج العميل. إذا كنت تستخدمها بطريقة مخططة ، فستجد أن دورة التطوير تستغرق وقتًا أقل.
- عناصر تحكم الأمان المحسّنة: يمكنك منح المستخدمين إذن لتنفيذ إجراء مخزن بشكل مستقل عن أذونات الجدول الأساسي.
تشبه الإجراءات المخزنة الدالات المعرفة من قبل المستخدم ، ولكن توجد اختلافات دقيقة.
بناء
تشبه الإجراءات المخزنة التركيبات المشاهدة في لغات البرمجة الأخرى.
يقبلون البيانات في شكل معلمات الإدخال المحددة في وقت التنفيذ. يتم استخدام معلمات الإدخال هذه (في حالة تنفيذها) في تنفيذ سلسلة من العبارات التي تنتج بعض النتائج. يتم إرجاع هذه النتيجة إلى بيئة الاستدعاء من خلال استخدام مجموعة سجلات ومعلمات الإخراج ورمز الإرجاع.
قد يبدو ذلك مثل الفم ، لكنك ستجد أن الإجراءات المخزنة بسيطة للغاية بالفعل.
مثال
دعونا نلقي نظرة على مثال عملي يتعلق بالجدول المسمى بالجرد المعروض في أسفل هذه الصفحة. يتم تحديث هذه المعلومات في الوقت الفعلي ، ويقوم مديرو المستودعات بالتحقق باستمرار من مستويات المنتجات المخزنة في مستودعاتهم والمتاحة للشحن. في الماضي ، كان كل مدير يقوم بتشغيل استعلامات مشابهة لما يلي:
حدد المنتج ، الكميةمن المخزونحيث مستودع = 'FL'
هذا أدى إلى أداء غير فعال على SQL Server. في كل مرة ينفذ فيها مدير المستودع الاستعلام ، يتم إجبار خادم قاعدة البيانات على إعادة ترجمة الاستعلام وتنفيذه من البداية. كما أنه يتطلب من مدير المستودع معرفة SQL والأذونات المناسبة للوصول إلى معلومات الجدول.بدلاً من ذلك ، يمكن تبسيط العملية من خلال استخدام إجراء مخزن. إليك رمز إجراء يسمى sp_GetInventory يقوم باسترداد مستويات المخزون لمستودع معين. يمكن لمدير مستودع فلوريدا الوصول إلى مستويات المخزون عن طريق إصدار الأمر: يمكن لمدير مستودع نيويورك استخدام نفس الإجراء المخزن للوصول إلى مخزون تلك المنطقة: من الممنوح ، هذا مثال بسيط ، لكن فوائد التجريد يمكن رؤيتها هنا. لا يحتاج مدير المستودع إلى فهم SQL أو العمليات الداخلية للإجراء. من منظور الأداء ، يعمل الإجراء المخزن العجائب. ينشئ SQL Server خطة تنفيذ مرة واحدة ومن ثم reutilizes فإنه قبل توصيل المعلمات المناسبة في وقت التنفيذ.الآن بعد أن تعلمت فوائد الإجراءات المخزنة ، اخرج منها واستخدمها. جرب بعض الأمثلة وقسِّم تحسينات الأداء التي تم تحقيقها - ستندهش! جدول الجردCREATE PROCEDURE sp_GetInventorylocation varchar (10)مثلحدد المنتج ، الكميةمن المخزونحيث مستودع = @ الموقع
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory "NY"
هوية شخصية المنتج مستودع كمية 142 فاصوليا خضراء NY 100 214 بازيلاء FL 200 825 حبوب ذرة NY 140 512 الفاصوليا NY 180 491 طماطم FL 80 379 البطيخ FL 85