تقييم الدرس 4: أول إجراء مخزن: CREATE PROCEDURE و CALL. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) ما الذي لا يوجد في تعريف الإجراء ويوجد في الدالة؟
2) في Oracle يُستدعى الإجراء من SQL*Plus بـ:
3) ماذا يحدث عند تنفيذ هذا السطر؟
query.sql
SELECT restock(1, 5);
4) المتغير الذي يخبرك هل عدّل UPDATE صفوفًا:
5) الأنسب لـ «حساب سعر بعد الخصم» هو:
2السؤال الثاني: صح أم خطأ
1) يمكن استخدام الإجراء داخل WHERE.
الصواب: خطأ
2) الإجراء يستطيع تنفيذ عدة أوامر INSERT و UPDATE.
الصواب: صح
3) RETURNING id INTO يعمل مع INSERT.
الصواب: صح
4) في MySQL يُستدعى الإجراء بـ CALL أيضًا.
الصواب: صح
5) UPDATE بلا WHERE داخل إجراء يعدّل صفًّا واحدًا فقط.
الصواب: خطأ
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) يُستدعى الإجراء المخزن في PostgreSQL بالأمر .
الإجابة: CALL
2) لأخذ المعرّف المولَّد بعد INSERT نكتب ثم المتغير.
الإجابة: RETURNING id INTO
3) الإجراء غرضه تنفيذ لا إرجاع قيمة.
الإجابة: عمل
4السؤال الرابع: أسئلة عملية
1) ما المخزون بعد هذا الكود؟
query.sql
CREATEPROCEDURE restock(p_id int, amount int)LANGUAGEplpgsqlAS $$BEGINUPDATE products SET stock = stock + amount WHERE id = p_id;RAISENOTICE'أُضيفت % قطعة للمنتج %', amount, p_id;END;$$;CALL restock(12, 7);SELECT stock FROM products WHERE id = 12;
الناتج الصحيح:
النتيجة · صف واحد
stock
10
2) ما ناتج هذا الكود؟
query.sql
CREATEPROCEDURE restock(p_id int, amount int)LANGUAGEplpgsqlAS $$BEGINUPDATE products SET stock = stock + amount WHERE id = p_id;RAISENOTICE'أُضيفت % قطعة للمنتج %', amount, p_id;END;$$;CALL restock(99, 5);SELECTcount(*) FROM products WHERE stock > 100;