متى تُستخدم العبارات المستندة إلى مجموعة والعمليات المستندة إلى صف
تُستخدم العبارات المستندة إلى مجموعة لتحديث سجلات بيانات متعددة أو إدراجها أو حذفها من أحد الجداول.
وتُستخدم العمليات المستندة إلى صف أو غير المستندة إلى مجموعة لتحديث سجل مفرد من أحد الجداول أو إدراجه أو حذفه.
يمكن أن يؤدي استخدام الاستعلامات المستندة إلى مجموعة إلى زيادة الأداء بشكل كبير عن طريق تقليل عدد الاستدعاءات التي يتم اجراؤها على قاعدة البيانات.
تتطلب العملية المستندة إلى صف استدعاءً إلى قاعدة البيانات لكل سجل يلزم معالجته، بينما تستدعي العبارة المستندة إلى مجموعة قاعدة البيانات مرة واحدة فقط.
على سبيل المثال، إذا كنت بحاجة إلى تحديث 100 سجل فِي جدول، فإن العملية المستندة إلى صف ستستدعي طريقة التحديث وتستدعي قاعدة البيانات 100 مرة لتحديث جميع السجلات. ستستدعي العبارة المستندة إلى مجموعة طريقة update_recordset مرة واحدة وستستدعي قاعدة البيانات مرة واحدة لتحديث جميع السجلات.
فِيما يلي ثلاثة أمثلة على العبارات المستندة إلى مجموعة التي يمكن استخدامها:
Update_recordset- تُستخدم لتحديث سجلات متعددة فِي وقت واحد.Delete_from- تُستخدم لحذف سجلات متعددة فِي وقت واحد.Insert_recordset- تُستخدم لنسخ سجلات متعددة من جدول واحد أو أكثر إلى جدول آخر.
يمكن لـ update_recordset تحديث حقول متعددة فِي جدول. يمكنُك أيضًا تحديد عبارة WHERE لتحديد السجلات التي يتم تحديثها. فِيما يلي مثال لرمز update_recordset حيث تعلن عن الجدول وتستدعي update_recordset لتحديث حقلي العميل PaymMode وCurrency فقط للعملاء الذين لديهم حقل CustGroup يساوي "US". وضع فِي اعتبارك أنه فِي حال تجاوز طريقة التحديث، فإن update_recordset ستستدعي طريقة التحديث كل على حدة بدلاً من الكل فِي وقت واحد.
CustTable custTable;
Update_recordset custTable
Setting
PaymMode = 'Check',
Currency = 'USD'
Where custTable.CustGroup == 'US';
تبدو طريقة delete_from مماثلة لـ update_recordset. يمكنُك حذف سجلات متعددة فِي نفس الوقت من أحد الجداول، ويمكنُك استخدام عبارة WHERE لتحديد السجلات المراد حذفها. فِي المثال التالي، يتم الإعلان عن الجدول ثم استدعاء delete_from لحذف جميع السجلات حيث يساوي حقل CustGroup الخاص بالعميل "US".
CustTable custTable;
Delete_from custTable
Where custTable.CustGroup == 'US';
يُتيح لك Insert_recordset إدخال سجلات متعددة من جدول ما فِي جدول آخر. ويمكنُك استخدام عبارة WHERE لتحديد السجلات المراد إدراجها، كما يمكنُك استخدام المتغيرات لإدراجها. فِي المثال التالي، يتم الإعلان عن الجدول الذي سيتم إدراجه والجدول الذي تسحب البيانات منه. ثم يتم استدعاء insert_recordset لإدراج البيانات فِي الحقول المدرجة بين قوسين. وبعد ذلك، يتم استدعاء الحقول من الجدول المرحلي بالترتيب الذي تم به إدراج الحقول بين الأقواس. الآن، سيتم إدراج تلك الحقول فِي CustTable حيث يساوي حقل CustGroup الخاص بالعميل المرحلي "US".
CustTable custTable;
CustCustomerBaseStaging custCustomerBaseStaging;
Insert_recordset custTable (accountNum, custGroup, paymMode, currency)
Select CustomerAccount, CustomerGroupId, PaymentMethod,SalesCurrencyCode
From custCustomerBaseStaging
Where custCustomerBaseStaging.CustGroupID == 'US';