1.ما هو الإجراء المخزن؟
يتم تجميع الإجراء المخزن مرة واحدة ويمكن تشغيله عدة مرات (يتم تخزين الإجراء المخزن في الخادم).
2. الإجراءات المخزنة في النظام شائعة الاستخدام
شفرة
- الغرض: الإجراءات المخزنة في النظام شائعة الاستخدام
EXEC sp_databases - قائمة قواعد البيانات في النظام الحالي
EXEC sp_renamedb 'test','test1'--تغيير اسم قاعدة البيانات (وصول مستخدم واحد)
استخدم ستودب
يذهب
EXEC sp_tables - قائمة الكائنات التي تم الاستعلام عنها في قاعدة البيانات الحالية
EXEC sp_columns stuInfo - يقوم بإرجاع معلومات حول عمود الجدول
EXEC sp_help stuInfo - عرض معلومات الجدول stuInfo
EXEC sp_helpconstraint stuInfo - عرض قيود الجدول stuInfo
EXEC sp_helpindex stuMarks - عرض فهرس الجدول stuMarks
EXEC sp_helptext 'view_stuInfo_stuMarks' - عرض نص بيان العرض
EXEC sp_stored_procedures - إرجاع قائمة الإجراءات المخزنة في قاعدة البيانات الحالية
استخدم سيد
يذهب
exec xp_cmdshell 'mkdir D:bank'،no_output--إنشاء مجلد
3. الإجراءات المخزنة المخصصة
(1.) الإجراء المخزن بدون معلمات
شفرة
استخدم مسمار
يذهب
إذا كان موجودًا (اختر * من كائنات النظام حيث الاسم = 'proc_stu')
إسقاط بروك proc_stu
يذهب
إنشاء الإجراء proc_stu
مثل
أعلن @ writeAvg float، @labAvg float - متوسط متغير النتيجة للاختبار الكتابي واختبار الكمبيوتر
حدد @writerAvg=AVG(writerExam)، @labAvg=AVG(labExam) من stuMarks
اطبع "متوسط النتيجة في الاختبار الكتابي:"+convert(varchar(5),@writerAvg)
اطبع "متوسط درجات اختبار الكمبيوتر:"+convert(varchar(5),@labAvg)
إذا (@writerAvg>70 و@labAvg>70)
طباعة "نتائج امتحان هذا الفصل: ممتاز"
آخر
طباعة "نتائج امتحان هذا الفصل: سيئة"
مطبعة '------------------------------------------------ --'
طباعة "الطلاب الذين فشلوا في اجتياز هذا الاختبار:"
حدد stuName,stuInfo.stuNo,writerExam,labExam من stuInfo
الانضمام الداخلي إلى stuMarks على stuInfo.stuNo=stuMarks.stuNo
حيث الامتحان الكتابي <60 أو الاختبار المختبري <60
يذهب
exec proc_stu - تنفيذ الإجراءات المخزنة (2.) الإجراءات المخزنة مع معلمات الإدخال
شفرة
استخدم ستودب
يذهب
/*---اكتشاف ما إذا كان موجودًا: يتم تخزين الإجراء المخزن في كائنات النظام بجدول النظام---*/
إذا كان موجودًا (حدد * من كائنات النظام حيث الاسم = 'proc_stu')
إسقاط الإجراء proc_stu
يذهب
/*---إنشاء إجراء مخزن----*/
إنشاء إجراء proc_stu
@ writePass int،
@labPass int-- يمكنك إضافة قيمة افتراضية بحيث يكون التنفيذ مثل exec proc_stu دون تحديد المعلمات.
مثل
اطبع "علامة المرور المكتوبة:"+convert(varchar(5),@writerPass)
اطبع "خط اجتياز اختبار الكمبيوتر:"+convert(varchar(5),@labPass)
مطبعة '------------------------------------------------ --'
طباعة "الطلاب الذين فشلوا في اجتياز هذا الاختبار:"
حدد stuName,stuInfo.stuNo,writerExam,labExam من stuInfo
الانضمام الداخلي إلى stuMarks على stuInfo.stuNo=stuMarks.stuNo
أين writeExam<@writerPass أو labExam<@labPass
يذهب
exec proc_stu 60,55
exec proc_stu 60,@labPass=55
exec proc_stu @ writePass=60,@labPass=55
exec proc_stu @writerPass=60,55--سيبلغ هذا السطر عن خطأ: يجب تمرير المعلمة 2، ويجب تمرير المعلمات اللاحقة في شكل '@name = value'.
-- بمجرد استخدام النموذج "@name = value"، يجب تمرير جميع المعلمات اللاحقة في النموذج "@name = value"
(3.) الإجراء المخزن مع معلمات الإخراج
شفرة
استخدم ستودب
يذهب
/*---اكتشاف ما إذا كان موجودًا: يتم تخزين الإجراء المخزن في كائنات النظام بجدول النظام---*/
إذا كان موجودًا (حدد * من كائنات النظام حيث الاسم = 'proc_stu')
إسقاط الإجراء proc_stu
يذهب
/*---إنشاء إجراء مخزن----*/
إنشاء إجراء proc_stu
@notpassSum int OUTPUT، --OUTPUT الكلمة الأساسية، وإلا فسيتم اعتبارها معلمة إدخال
@ writePass int=60, - يتم وضع المعلمات الافتراضية بعد ذلك
@labPass int=60 - يتم وضع المعلمات الافتراضية بعد ذلك
مثل
اطبع "علامة المرور المكتوبة:"+convert(varchar(5),@writerPass)
+ "خط النجاح في الاختبار المعتمد على الكمبيوتر:"+convert(varchar(5),@labPass)
مطبعة '------------------------------------------------ --'
طباعة "الطلاب الذين فشلوا في اجتياز هذا الاختبار:"
حدد stuName,stuInfo.stuNo,writerExam,labExam من stuInfo
الانضمام الداخلي إلى stuMarks على stuInfo.stuNo=stuMarks.stuNo
أين writeExam<@writerPass أو labExam<@labPass
/*--إحصاء وإرجاع عدد الطلاب الذين فشلوا في الامتحان--*/
حدد @notpassSum=COUNT(stuNo)من stuMarks
أين writeExam<@writerPass أو labExam<@labPass
يذهب
/*---إجراء الاتصال المخزن----*/
أعلن @sum int
EXEC proc_stu @sum OUTPUT ,64 - تعتمد علامة النجاح في اختبار الكمبيوتر القيمة الافتراضية: علامة النجاح في الاختبار الكتابي هي 64 نقطة، وعلامة النجاح في اختبار الكمبيوتر هي 60 نقطة.
مطبعة '------------------------------------------------ --'
إذا @المجموع>=3
طباعة "عدد الأشخاص الذين فشلوا:"+convert(varchar(5),@sum)+ "الأشخاص، أكثر من 60%، يجب تخفيض درجة النجاح"
آخر
طباعة "عدد الأشخاص الذين فشلوا:"+convert(varchar(5),@sum)+ "الأشخاص، تم التحكم بهم أقل من 60%، ودرجة النجاح معتدلة"
يذهب