كل شي عن stored prosedure - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم مقالات SQL SERVER (http://vb4arb.com/vb/forumdisplay.php?fid=84) +--- الموضوع : كل شي عن stored prosedure (/showthread.php?tid=5496) |
كل شي عن stored prosedure - RaggiTech - 10-10-12 كاتب الموضوع : حماده عماره
بسم الله الرحمن الرحيم
اولا ما هو stored proceduers هو احد مكونات قاعدة البيانات والتي تتكون من(table - view - trigeer- stored proceduers-index-constraint-cursor ...) ببساطه هو sub وممكن نقول function كمان بتاعت sql server والتي تعمل بلغة t-sql يعني لو عاوز برنامج فرعي داخل السيرفر بيعمل وظيفه معينه عند استدعائه يبقا هو stored proceduer طبعا الكلام مبهم ومش واضح يبقا في الاول نوضح بمثال سريع اول شي الامثله عشان تنفذها انت محتاج sql server 2000\2005 اي واحد يمشي ويكون ليك معرفه قبل كده باوامر سكوال العاديه يعني تكون مجرب او قارئ قبل كده مش واحد بادء من الصفر بصراحه لانه برده مش ها يفهمه لان كل شي وله مرحله في الفهم والتطبيق المهم هانفتح query analizer ونكتب الكود ده كود : use northwind كلمة proc هي اختصار stored proseduer كلمة proc1 هي اسم البروسيدير الذي انشاناه كلمة as ياتي بعدها الاوامر المراد تنفيذها وهي كما تريد وهنا استخدمنا احد اوامر الاستعلامات select وممكن كتابة اي عدد من الاوامر طبعا انا عارف ان الشرح غير واضح بس انا بحاول اوضح علي قد ماقدر اسف ان كان فيه لبس عند احد المهم نكمل طبعا في المثال الي عده احنا الب انشائنا البروسيدير بس البروسيدر ده نوعان وهما (system stored procduer -- user stored proceduer) وفي حالتنا طبعا نوعه user stored proceduer يعني المستخدم الي بناه طيب احنا انشائنا بروسيدير ازاي استدعيه ممكن تستدعيه بالشكل التالي لينفذ لك الاوامر الي فيه وهي execute proc1 اكتب الامر السابق في الكويري وهو هينفذ الاوامر الي فيه عموما بالنسبه للاستدعاء يجب ان تكون واقف في داخل القاعده الي فيها البروسيدير عشان تقدر تستدعيه اما بالنسبه للنوع التاني المبني جاهز من قبل السيرفير تقدر تنادي عليه من اي قاعده وينفذ الاوامر بتاعته الي كلها مكتوبه طبعا ب t-sql و sql حاجه كمان احنا ليه اصلا بنصنعه مانا ممكن اكتب الاوامر وخلاص انا اقولك ايه اهميته وهو اولا توفير طاقة الضغط علي الشبكه من ناحيه ومن ناحيه تانيه توفير الضغط علي السيرفير وتنفيذه اسرع بكتير من جمل sql العاديه لان عند استدعائه اول مره يقوم السيرفر بتجهيزه (مش عارف اعبر) المهم بيكون جاهز بعد كده وبمجرد استدعائه بينفذ الاوامر بسرعه ومش محتاج تجهيز تاني وده عكس جمل sql الي في كل مره بحتاج يجهزها الاول قبل تنفيذها اسف الكلمات مش مساعداني عشان اعبر بكلمات صح نكمل في الجزء القاده هانتعلم الوضع المتقدم شويه واستخدام المتغيرات paramters كل شي عن stored prosedure - RaggiTech - 10-10-12 الجزء الثاني من stored proceduer والتعامل مع paramters
***ملحوظه في اخر الدوره سوف اشرح ازاي نا استعمل stored procduer في داخل اللغه vb. net2005***** احنا شوفنا في الجزء الاول ازاي اعمل بروسيدير وازاي استدعيه دلوقتي انا هاعمل شي اخر وهو انشر امثله توضح اهميته ولماذا يفضل استخدامه المثال الاول مثلا وانا في الكويري لو عاوز اعمل جملة ادراج في احد الجداول وياسلام بقا لو ان المفروض ان المفروض هاعمل ادراج في اكتر من جدول مثلا في جدول الفواتير هاعمل فيه ادخال فاتوره جديده وفي نفس الوقت هاعمل تعديل في جدول المخازن يعني هاعمل حوالي 3 اسطر من الاوامر اولهم جملة select و تاني سطر تقليل كمية المخزون في جدول السلع في حقل الكميه المتوفره من السلعه التي تم بيعها وده بجملة update وفي الاخر ممكن نعمل جملة select لنعرض الناتج طيب انا ممكن اعمل كل ده في سطر واحد وصغير ازاي انا هاشرح ده ملحوظه مهمه بالنسبه للمبتدائين هيكون صعب عليهم الموضوع ده دلوقتي بس الي عاوز يكمل براحته المهم هنفترض وجود الجدول ده وهو cust وهو بيعبر عن الموظفين وفيه الحقول دي (id -name-phone ) وده جدول تجريبي لتوضيح الفكره المهم انا هافترض ان الجدول ده عندك في القاعده هانفتح الكويري وتكتب كود الانشاء ده كود : create proc proc2 ( @id int , @name char(40) , @phone char(20)) as استخدم امر التشغل لينهي هذه العمليه وشرحه هو اول سطر زي ماهو واضح احنا بدانا اوامر انشاء البروسيدير وبين القوسين عرفنا عدد من المتغيرات وهي @id ومعناها متغير نوعه integer نلاحظ عند التصريح عن متغير يجب دائما ان يسبقه علامة @ وهو يدل ان هذا متغير @name متغير نوعه char وهكذا حقل التليفون طيب واحد هايسئل احنا وضعناهم بين قوسين ليه.... بمنتهي البساطه المتغيرات دي لازم تدخلها عند الاستدعاء وهنشوفها بعد شويه المهم في البروسيدير هاياخد المتغيرات دي ويحطها في الجمل في مكانها نشوف كده في جملة الادراج نلاحظ اننا في القيم اننا لم نضعها وانما وضعنا بدلا منها المتغيرات التي ادخلناها مع استدعاء البروسيدير نجرب للتوضيح الان نستدعي البروسيدير نلاحظ بعد انشاء البروسيدير لو طلبت التنفيذ هيظهر خطا بسسب انه موجود قبل كده بعد ما تنشاه امسح الكود بتاعه من الكويري واكتب كود : exec proc2 '1','hamada','0163968865' ملاحظه كلمة exec اختصار امر execute الذي تحدثنا عنه في المره السابقه والاسلوب ده اسمه كتابة اسكربت sql طيب دي نهاية الموضوع .....لا .. ياعم ا صبر افهم دول كويس والجاي يبقا اسهل مثلا انا خلاص ذاكرت الي عده وفهمته انا عاوز اكمل...... الموضوع بسيط دلوقتي انا هدخل جمل if و جمل case with when نلتقي في الدرس القادم |