وظيفة الـ procedureاللى الموجود فى لغات البرمجة -أليس اختصار عملية مكررة فبدلً من كتابتها مرات ومرات نقوم باستدعاءها فقط باسمها كذلك الـ procedureفى SQL وفى فوائد اخري أهمها :أنت شغال فى فريق عمل بلغة مختلفة ومشروعكم فى الخر بيتجمع لما يأتى دور صيانة للبرنامج هتكون الـ procedureاللى خى الجراءات المخزنة بلغة موحدة يعنى الكل يعرف يتعامل معاها مباشرة ونقطة هامة أخري :سرعة تنفيذ الجراء المخزن لن لما تنفذ المر عن طريقه -محرك قواعد البيانات أو السيرفر لن يكون محتاج يعمل Parssingلن الجراء مخزن عنده أصلً ومتأكد منه من قبل هناك نوعين من الجراءات المخزنة : Simple Procedureبيكون موجود بشكل تلقائي عند اعداد الـ SQL : Parameter Procedureهذا الذى سوف ننشأه وتابع لك وليس تابع للنظام كمثال على النوع الول : الجراء sp_help افتح SQL Query Analyzer اكتب الجراء sp_help Table_Name = Table_Nameاسم أى جدول عندك فى القاعدة اللى امامك ستجد أن الجراء يقوم بعرض بنية الجدول من حيث الحقول وخصائصها طبعاً الجراء sp_helpاجراء نظامي لم نحتاج لكتابة المر Createلنشاءه ======================================== نأتي للنوع الثاني Parameter Procedureبعد أن تعرفنا على النوع الول بصورة سريعة كيف ننشأه صيغته هكذا كود:
]CREATE PROCEDURE [OWNER].[PROCEDURE NAME AS
مثال افتح SQL Query Analyzer اكتب الكود كود:
create procedure p1 @f int as select * from Table_Name where Column_Name = @f = Table_Nameاسم أى جدول عندك فى القاعدة = Column_Nameاسم حقل فى هذا الجدول المحدد @ : fبراميتر أى وسيطة سيقوم المستخدم بارسال رقم لها نحن الن أنشأنا الجراء المخزن كيف سينفذ عن طريق SQL Query Analyzerاكتب هذا المر
execute p1 10 حيث executeأمر التنفيذ p1اسم الجراء المخزن الذى أنشأناه من دقائق القيمة 10قيمة من عندى التى سترسلها للبراميتر @f لتنسى وضع اسم جدول من عندك وحقل من عندك يكون موجود فى الجدول المطلوب اذن سيكون الكود عبارة عن جملة Select كود:
select * from Table_Name where Column_Name = 10
Drop Procedure يستخدم هذا المر لحذف اجراء معين كمثال لحذف الجراء الذى أنشأناه فى الشرح الن drop procedure p1
القوادح Triggers نظرًا لهمية القوادح سنتكلم عن كيفية استخدامها ببساطة دون تعقيد أو ًل ما هي Triggers القوادح هى عبارة عن مجموعة من الوامر يتم تنفيذها كلما صدر المر المسبب للقادح وتستخدم القوادح أيض ًا كشروط اضافية عندما ل تستطيع تكوين CONSTRAINTعلى جدول معين فتكون هى البديل لذلك والقوادح مثلها مثل الجراءات المخزنة SPمن حيث الديناميكية ولكن لها تخصص اكبر والمقصود بها الوامر متى تنفذ القوادح تنفيذ عند تنفيذ المر المرتبطة به وهى ثلث حالت : Delete حيث تختص هذه الجمله بالحذف. : Update حيث تختص هذه الجمله بالتعديل. : Insert حيث تختص هذه الجمله بالضافة صيغة انشاء قادح Trigger
]CREATE TRIGGER [TRIGGER NAME] ON [dbo].[Table Name FOR INSERT, UPDATE, DELETE as = TRIGGER NAME اسم القادح المراد انشاءه = Table Name
اسم الجدول المطبق عليه القادح
مثال على تطبيق قادح على جدول عندما تعدل حقل معين ل يعدل عندنا جدول اسمه Class_Quant_Primary به حقل رقمى اسمه Quant_UA كتبت هذه القادح كود:
CREATE TRIGGER [update_quant_prim] ON [dbo].[Class_Quant_Primary] for update as )if update (Quant_UA begin )'!!! print ('hello baby - u cant update rollback transaction
شرح القادح اعطيت اسم للقادح كتبت اسم الجدول المراد التنفيذ عليه اخبرته انه عند القيام بتعديل على الحقل Quant_UA يقوم باظهار رسالة تخبر المستخدم بعدم امكانية التعديل وكتبت سطر التراجع عن التعديل
هنقوم بتكوين قادح الن ليلغى الضافة على نفس الجدول السابق نكتب هذا القادح كود: ]CREATE TRIGGER [insert_prim] ON [dbo].[Class_Quant_Primary for insert as begin )'!!!print ('hello baby - u cant insert rollback transaction end
كل ما فى المر أننا غيرنا المر القادح من Updateإلى Insert وكذلك المر مع الحذف نغير المر فقط هنقوم بتكوين قادح الن ليلغى الضافة على نفس الجدول السابق نكتب هذا القادح ]CREATE TRIGGER [Delete_prim] ON [dbo].[Class_Quant_Primary for Delete as begin )'!!! print ('hello baby - u cant Delete rollback transaction end
كل ما فى المر أننا غيرنا المر القادح من Insertإلى Delete طبع ًا لزم نغير سم القادح باسم مختلف مع كل قادح ننشأه
لحذف القادحDrop يمكن استخدام المر ويمكن توقف عمله عن طريق المر :كود
ALTER TABLE Table_Name DISABLE TRIGGER TRIGGER_Name
Table_Name اسم الجدول TRIGGER_Name اسم القادح لتمكينه :كود
ALTER TABLE Table_Name ENABLE TRIGGER TRIGGER_Name