لماذا لا يمكنني إرجاع مجموعة سجلات باستخدام OLEDB في إجراء مخزن؟
لقد كتبت ذات مرة برنامجًا يعمل على جدول مؤقت (الوظيفة الرئيسية هي استرداد أفضل 10 سجلات من كل فئة).
يستخدم الإجراء المخزن ODBC للاتصال بقاعدة البيانات بشكل طبيعي ويمكنه الحصول على النتائج الصحيحة. ولكن عند استخدام oledb للاتصال، لا يمكن إرجاع مجموعة السجلات، وبمجرد أن تقوم العملية بإرجاع مجموعة السجلات، تظهر رسالة خطأ:
ADODB.خطأ في مجموعة السجلات '800a0e78'
العملية التي يطلبها التطبيق غير مسموح بها إذا كان الكائن مغلقًا.
إنه يحيرني. لماذا هذا؟
ويرجع ذلك إلى وجود اختلاف بين OLEDB وODBC، أي أنه عندما يحصل ASP على مجموعة السجلات من ODBC، يقوم ODBC بتصفية السجلات التي تم إنشاؤها بواسطة إنشاء جدول.
أو يقوم الإدراج في بإنشاء بعض مجموعات السجلات التي تشغل المواضع فقط ولكن لا يمكنها تنفيذ أي عمليات. عندما يحصل ASP على مجموعة السجلات من OLEDB، لا يفعل ذلك OLEDB
لا يتم تصفية مجموعات السجلات هذه. ولذلك، يجب علينا تنفيذ تعيين nocount قبل إعادة مجموعة السجلات في الإجراء المخزن.
يُحظر على الإجراءات المخزنة إرجاع مجموعات السجلات؛ ولإرجاع مجموعات السجلات، يجب تنفيذ عدم العد أولاً. وبهذه الطريقة سيتم حل المشكلة.