Skip to main content

Posts

Showing posts from March, 2015

الجزء ال20: فوائد الأجراء المخزن Advantages of Stored Procedures

الجزء ال20: فوائد الأجراء المخزن Advantages of Stored Procedures يتلخص فوائد استخدام الأجراء المخزن بخمس نقاط اساسية:   Execution plan retention and reusability.   Reduces network traffic. Code  re-usability  and better maintainability. Better Security. Avoids SQL Injection attack. سأشرح بأختصار معنى كلً من النقاط الخمس: 1.    Execution plan retention and reusability. جملة الأستعلام لها تسميات عدة يجب معرفتها :( Inline SQL ) او ( Adhoc queries )  او (query statement) , المهم, عند تنفيذ اي جملة استعلام ثلاث امور يتم اجراءُها من قبل SQL Server وهي كالأتي: 1.       تفقد تركيب جملة الأستعلام Check Query Syntax . 2.       عملية التجميع جملة الأستعلام Compile 3.       تنفيذ جملة الأستعلام Execute وبعد اجراء الخطوات الثلاث يتم تخزين (cache)  هذه الخطوات داخل ال SQL Server , وبهذا عند تنفيذ نفس جملة الأستعلام لا يتم اجراء الخطوات الثلاث مرة اخرى! وتسمى هذه العملية ب( Execution plan ), بمساعدة ال Indexes . ولكن السؤال هنا اذا كانت جمل الأستعلام تعمل عل

الجزء ال19: الأجراء المخزن مع ارجاع قيمة Stored Procedure with Return Value

الجزء ال19: الأجراء المخزن مع ارجاع قيمة   Stored Procedure with Return Value تعلمنا في الجزء ال18 كيفية استرجاع قيمة وتخزينها في متغير عن طريق ال OUTPUT , في هذا الجزء سنتعلم كيفية ارجاع قيمة بطريقة ال Return وسنعرف ماالفرق بينهما: الفرق بين الأثنين: Output parameter Return status value نوع القيم المسترجعة قد تكون اي نوع من انواع البيانات نوع القيمة المسترجعة يجب ان تكون عدد integer عدة قيم مسترجعة قيمة مسترجعة واحدة فقط تستخدم لأسترجاع بيانات مثل : اسم الموظف , عدد الموظفين , قسم الموظفين وغيرها.... تستخدم في العمليات لمعرفة ما اذا كانت قيمة نجاح او خطأ مثال: اريد معرفة عدد الموظفين؟ يمكن ذلك عن طريق استخدام ال OUTPUT parameter وكذلك عن طريق ال Return status value : الحل الأول: عن طريق ال OUTPUT parameter : انشاء الأجراء اللازم: USE [test] GO CREATE PROC spGetEmpCount @totalEmp int OUTPUT AS BEGIN   SELECT @totalEmp = COUNT ( ID ) FROM tblEmployees END تنفيذ الأجر

الجزء ال18: الأجراء المخزن مع أخراج قيمة معينة Stored Procedure with Output Parameter

الجزء ال18: الأجراء المخزن مع أخراج قيمة معينة Stored Procedure with Output Parameter في الجزء ال17 تعلمنا كيفية انشاء اجراء وتنفيذه واعطاءه قيمة له, وفي هذا الجزء سنتعلم كيفية استرجاع قيمة منه, بالأضافة الى تعلم بعض اجراءات النظام المخزونة, ربما يدور في بالك: في الجزء ال17 قمنا بأنشاء جمل استعلام داخل الأجراء وهي بالأساس تعمل على استرجاع بيانات؟! فما الفرق بينها وبين القيم المسترجعة في هذا الجزء؟! الجواب القيم المسترجعة عبر ال SELECT لا يمكن استخدامها عبر اجراء اخر او داخل عملية معينة!, بينما في هذا الجزء سنتعلم كيفية استرجاع قيمة معينة وتخزينها في متغير واستعمال هذا المتغير في اجراء اخر كقيمة مدخلة, او لأستعمال تلك القيمة في عملية ما!. مثال: اريد عمل اجراء معين لأسترجاع عدد الموظفين الكلي وتخزين ذلك العدد في متغير؟! CREATE PROC spGetEmployeeCount @emp_total int OUTPUT AS BEGIN SELECT @emp_total = COUNT ( [ID] ) FROM tblEmployees END في الأجراء اعلاه, المتغير @emp_total نوعه عدد, وتم تحديده كقيمة مخرجة عن طريق كلمة OUTPUT , وفي داخل هذا المتغير