random

آخر الأخبار

random
جاري التحميل ...

التحكم فى انسياب عناصر لغة ترانزأكشن سيكوال

Control of Flow Language Elements


flow chart


يحتوى ترانزأكشن سيكوال على عدة عناصر لغوية تتحكم فى انسياب النصوص البرمجية خلال الكود ، ويحتوى كذلك على دالة CASE التى تمكن من استخدام الشروط المنطقية دالخل عبارة Select أو عبارة Update .

مستوى الجمل Statement Level

تمكن عناصر اللغة التالية من التحكم فى المنطق خلال النص البرمجى :

بلوكات BEGIN … END

تقوم هذه الجملة باحتواء مجموعة من عبارات ترانزأكش سيكوال ولذلك تعتبر وحدات منفصلة .

بلوكات IF … ELSE

تحدد هذه العناصر أن سيكوال سيرفر سيقوم بتنفيذ أول عبارة تطابق الشرط الموضوع ، وإلا سيقوم سيكوال سيرفر بتنفيذ العبارة الثانية.

بناء حلقة التكرار WHILE

يقوم هذا العنصر بتنفيذ العبارة بسرعة فى حالة إذا كان الشرط المحدد متحقق ، وتتحكم عبارات BREAK و CONTINUE فى العمليات الموجود داخل حلقة تكرار WHILE .
مثال
يستخدم المثال التالى جملة IF الشرطية لتحديد إذا كان يمكن حذف العميل المحدد ، حيث يمكن الشرط بين حالتين ، فإذا كان للعميل طلبيات سابقة فلن يتم حذفه ويتم إظهار رسالة تفيد ذلك ، وإذا لم يكن للعميل المحدد طلبيات سابقة سيتم حذفه وستظهر رسالة تفيد الحذف .

USE northwind
IF EXISTS (SELECT * FROM orders
           WHERE customerid = 'frank')
PRINT '*** Customer cannot be deleted ***'
ELSE
  BEGIN
   DELETE customers WHERE customerid = 'frank'
   PRINT '*** Customer deleted ***'
  END
GO

مستوى الصفوف Row Level

تستخدم دالة CASE قائمة من البدائل يتم توجيه قيمة لاختبارها بواسطة هذه البدائل ، وإذا كان التعبير فى عبارة When يرجع قيمة صحيحة True تقوم دالة Case بإرجاع التعبير الموجود فى عبارة Then ، وإذا كان التعبير خاطىء False يتم التفرع إلى عبارة Else إذا كانت مستخدمة ، يمكن استخدام عبارة دالة Case فى أى مكان فى التعبيرات .
الصيغة العامة
تتبع دالة Case الصيغة العامة التالية :

CASE expression
   {WHEN expression THEN result}  [,.n]
[ELSE result]
END

مثال
فى المثال التالى يتم التصريح عن متغير داخلى ، ويتم فحص قيمة هذا المتغير فإذا كانت تساوى 4 أو 5 أو 6 فيتم الدخول داخل ترانزأكشن سيكوال وحلقة تكرار While طالما كانت القيمة بين 4 و 6 ، ثم يتم حساب العمليات الحسابية التالية وإرجاع ناتجها.

DECLARE @n tinyint
SET  @n = 5
IF (@n BETWEEN 4 and 6)
 BEGIN
  WHILE (@n > 0)
   BEGIN
    SELECT  @n AS 'Number'
      ,CASE
        WHEN (@n % 2) = 1
          THEN 'ODD'
        ELSE 'EVEN'
       END AS 'Type'
    SET @n = @n - 1
   END
 END
ELSE
 PRINT 'NO ANALYSIS'
GO

وفى حالة عدم تحقق الشرط يتم إنهاء الشرط ويتم إظهار رسالة NO ANALYSIS

رسالة NO ANALYSIS

الكلمات المحجوزة Reserved Keyword

يحتوى سيكوال سيرفر على مجموعة من الكلمات المحجوزة ولا يمكن استخدامها إلا للأغراض المخصصة لها ، فمثلا لا يمكن استخدام الكلمات DUMP أو BACKUP إلا فى جلسات osql أو Query Analyzer .
لا يمكن استخدام الكلمات المحجوزة فى ترانزأكشن سيكوال فى أى مكان إلا الأماكن المحددة باستخدام سيكوال سيرفر ، وإذا كانت هناك ضرورة لاستخدام هذه الكلمات فى ترانزأكشن سيكوال فيجب وضعها بين قوسين مربعين [ ] .
استخدام الترانزأكشن Using Transaction
الترانزأكشن عبارة عن مجموعة من العبارات التى يتم قبولها دفعة واحدة ويقوم سيكوال سيرفر بمعالجتها كوحدة واحدة من العمل ، وينجع الترانزأكشن أو يسقط كوحدة واحدة أيضا فلا يمكن تنفيذ جزء بدون جزء آخر أو العكس ، وتدعم هذه العمليات دمج وتكامل البيانات .
يتم بدء عبارات الترانزأكشن بجملة Begin Transaction ويتم إنهائه باستخدام عبارة Commit Transaction فى حالة إنهاء الترانزأكشن بنجاح وتنفيذ كافة عملياته ، وتستخدم عبارة Rollback Transaction أيضا لإنهاء الترانزأكشن لكن بدون تنفيذ أى ممن العمليات المتضمنه به أى يكون ترانزأكشن فاشل .
الصيغة

BEGIN TRANSACTION
COMMIT / ROLLBACK TRANSACTION

مثال

BEGIN TRANSACTION
UPDATE savings
SET balance = (amount – 100)
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR ('Transaction not completed due to
savings account problem.', 16, -1)
ROLLBACK TRANSACTION
END
UPDATE checking
SET balance = (amount + 100)
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR ('Transaction not completed due to
checking account problem.', 16, -1)
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION

عن الكاتب

Ahmed Shahen | E-learning Expert

التعليقات


اتصل بنا

إذا أعجبك محتوى مدونتنا نتمنى البقاء على تواصل دائم ، فقط قم بإدخال بريدك الإلكتروني للإشتراك في بريد المدونة السريع ليصلك جديد المدونة أولاً بأول ، كما يمكنك إرسال رساله بالضغط على الزر المجاور ...

جميع الحقوق محفوظة

دورات تكنولوجيا المعلومات والتسويق الإلكتروني