بتـــــاريخ : 3/1/2011 10:34:49 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1362 0


    مثال حول الحلقات التكرارية في TSQL

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : خضر ترزي | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :
    مثال الحلقات التكرارية TSQL

    في الكثير من الاحيان قد تحتاج الى Stored Procedure للقيام بعملية احتساب معينة، بالطبع عبارات ال SQL البسيطة بامكانها القايم باحتسابات كثيرة و بصورة شاملة على الجدول بكامله، و لكن في بعض الاحيان فانت تحتاج الى حلقة تكرارية للقيام باحتساب ما

    الحلقة التكرارية سوف تسمح لك بالوصول الى السجلات واحد بعد الاخر للقيام بمعالجتهم.

    بالطبع بامكانك بناء Modle في قاعدة البيانات و استخدام ADO للقيام بكل العملية بلغة فيجوال بيزك ، و لكن ان انتبهت قليلا سوف تلاحظ بان ذلك ال Module يقوم بسحب البيانات عبر الشبكة من SQL Server الى الجهاز لاحتسابها و من ثم ارجاعها ، و بذلك سوف يصبح البرنامج بطيئ خصوصا اذا الاحتساب او العملية المطلوبة على السجلات معقدة و طويلة و عدد السجلات كبير.

    الطريقة الثانية لحل المشكلة لمحبي فيجوال بيزك للتطبيقات هي فصل ال Module من قاعدة البيانات عبر ال Microsoft Office Developer XP و حفظه في ملف DLL و تخزينه في الجهاز المركزي و تعريفه في DCOM+. و بالطبع ربطه مع قاعدة البيانات في الجهاز العادي.

    الطريقة الساقة بسيطة جدا حيث انها لن تحتاج الا الى امرين اضافيين لربط و سوف تنهي مسئلة تحريك عدد هائل من البيانات عبر الشبكة حيث ان ملف ال DLL و الذي يحتوي على ال function او ال Sub التي تقوم بالعملية هي على نفس الجهاز المركزي.

    السرعة سوف تزيد كثيرا و لكنها لن تصل الى اقصى حد ممكن لها

    الحد الاقصى الممكن هو بناء كود TSQL للقيام بالعملية ، احد الامور التي تبعد الكثيرين من استخدامه هو تخوفهم من الحلقات التكرارية، حيث كل المطلوب هي بناء Stored Procedure في Microsoft Access و عند النقر المزدوج عليها او عبر استدعائها بواسطة الكود سوف تنفذ مباشرة في الجهاز المركزي في SQL Server.

    عملية بسيطة للغاية اليس كذلك :) ؟

    اليكم الكود المطلوب لحلقة تكرارية

    CODE2

    DECLARE Employee_Cursor CURSOR FOR
    SELECT LastName, FirstName FROM Northwind.dbo.Employees
    OPEN Employee_Cursor
    FETCH NEXT FROM Employee_Cursor
    WHILE @@FETCH_STATUS = 0
    BEGIN

    ضع هنا الكود المطلوب بداخل الحلقة
    FETCH NEXT FROM Employee_Cursor
    END
    CLOSE Employee_Cursor
    DEALLOCATE Employee_Cursor

    كلمات مفتاحية  :
    مثال الحلقات التكرارية TSQL

    تعليقات الزوار ()