SQL Server - Section1 - استخدام Cursors في SQL Server
استخدام Cursors في SQL Server
الـ Cursor في SQL Server هو كائن يُستخدم للتنقل بين الصفوف في نتيجة استعلام، ومعالجة كل صف بشكل فردي.
🟢 تُستخدم Cursors عندما تحتاج إلى تنفيذ عمليات متسلسلة (row-by-row) بدلًا من التعامل مع النتائج دفعة واحدة.
✅ خطوات استخدام Cursor
- تعريف Cursor باستخدام
DECLARE
- فتح Cursor باستخدام
OPEN
- جلب الصف الحالي باستخدام
FETCH
- تكرار الخطوة السابقة حتى انتهاء الصفوف
- إغلاق Cursor باستخدام
CLOSE
- حذف Cursor باستخدام
DEALLOCATE
🧪 مثال عملي: استخدام Cursor لقراءة أسماء العملاء
DECLARE @CustomerName VARCHAR(255);
DECLARE customer_cursor CURSOR FOR
SELECT CustomerName FROM Customers;
OPEN customer_cursor;
FETCH NEXT FROM customer_cursor INTO @CustomerName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @CustomerName;
FETCH NEXT FROM customer_cursor INTO @CustomerName;
END;
CLOSE customer_cursor;
DEALLOCATE customer_cursor;
⬅ في هذا المثال نستخدم Cursor لطباعة أسماء العملاء واحدًا تلو الآخر.
📌 أنواع Cursors
- STATIC: يأخذ نسخة ثابتة من البيانات، ولا يعكس التغييرات.
- DYNAMIC: يعكس أي تغيير في البيانات أثناء التنقل.
- FORWARD_ONLY: يمكن التنقل للأمام فقط (الأكثر استخدامًا).
- KEYSET: يحتفظ بالمفاتيح فقط من نتيجة الاستعلام ويستخدمها للوصول إلى الصفوف الأصلية.
📝 ملاحظات مهمة
- تُعد Cursors أقل كفاءة من العمليات الجماعية (set-based)، لذلك استخدمها فقط عند الضرورة.
- يجب دائمًا إغلاق و إلغاء تخصيص Cursor لتجنب استهلاك الموارد.
- تأكد من فحص
@@FETCH_STATUS
في كل حلقة لتفادي أخطاء التكرار.
تعليقات
إرسال تعليق