21-10-12, 07:02 PM
كاتب الموضوع : Mr. Ahmed Negm
السلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
كثيراً ما تود العمل على الجمل الشرطية داخل SQL Stored Procedure أو SQL Functions ، وذلك لفحص نتائج معينة والقيام بتنفيذ مهام معينة بناءاً على تلك النتائج والقيم وما إلى ذلك ... إليك الآتي:
الشكل العام للجملة:
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]IF <[/color][color=#0000bb]الشرط محل الفحص[/color][COLOR=#007700]>
<[/COLOR][color=#0000bb]النتيجة[/color][COLOR=#007700]>
[/COLOR][color=#0000bb][/color][/COLOR]
أما عن الجمل الشرطية ، والمتبوعة بنتيجة شاملة لما يخالف الشرط الأساسي فبنائها كما يلي :
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]IF <[/color][color=#0000bb]الشرط محل الفحص[/color][COLOR=#007700]>
<[/COLOR][color=#0000bb]النتيجة[/color][COLOR=#007700]>
ELSE
<[/COLOR][color=#0000bb]النتيجة الأخري[/color][COLOR=#007700]>
[/COLOR][color=#0000bb][/color][/COLOR]
لاحظ الأمثلة التالية:
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]USE [[/color][color=#0000bb]ESHOP[/color][COLOR=#007700]]
DECLARE @[/COLOR][COLOR=#0000bb]MyVar INT
SELECT [/COLOR][color=#007700]@[/color][color=#0000bb]MyVar [/color][color=#007700]= ([/color][color=#0000bb]SELECT COUNT[/color][color=#007700](*) [/color][color=#0000bb]FROM PRODUCTS[/color][COLOR=#007700])
IF @[/COLOR][color=#0000bb]MyVar [/color][color=#007700]= [/color][COLOR=#0000bb]0
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO'
[/COLOR][color=#0000bb][/color][/COLOR]
أو المثال التالي:
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]USE [[/color][color=#0000bb]ESHOP[/color][COLOR=#007700]]
DECLARE @[/COLOR][COLOR=#0000bb]MyVar INT
SELECT [/COLOR][color=#007700]@[/color][color=#0000bb]MyVar [/color][color=#007700]= ([/color][color=#0000bb]SELECT COUNT[/color][color=#007700](*) [/color][color=#0000bb]FROM PRODUCTS[/color][COLOR=#007700])
IF @[/COLOR][color=#0000bb]MyVar [/color][color=#007700]= [/color][COLOR=#0000bb]0
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO'
[/COLOR][COLOR=#007700]ELSE
PRINT [/COLOR][COLOR=#dd0000]'Not ZERO'
[/COLOR][color=#0000bb][/color][/COLOR]
-----------------------------------------------------
سنتجه لمعالجة مشكلة أخرى وهي كما يلي:
ماذا لو أردنا تنفيذ مجموعة من السطور المختلفة كنتيجة لتحقق شرط ما ، فمثلاً لو نظرنا للكود السابق وأردنا أن نطبع السطر ( ZERO ) وكذلك السطر ( ZERO INDICATES THAT YOU HAVE NO RECORDS ) تحت بعض ، تعال نستخدم الكود التالي ونرى النتيجة :
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]USE [[/color][color=#0000bb]ESHOP[/color][COLOR=#007700]]
DECLARE @[/COLOR][COLOR=#0000bb]MyVar INT
SELECT [/COLOR][color=#007700]@[/color][color=#0000bb]MyVar [/color][color=#007700]= ([/color][color=#0000bb]SELECT COUNT[/color][color=#007700](*) [/color][color=#0000bb]FROM PRODUCTS[/color][COLOR=#007700])
IF @[/COLOR][color=#0000bb]MyVar [/color][color=#007700]= [/color][COLOR=#0000bb]0
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO'
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO INDICATES THAT YOU HAVE NO RECORDS'
[/COLOR][color=#0000bb][/color][/COLOR]
ستجد أن النتيجة الخاصة بتنفيذ هذه الجمل هي طباعة السطر الأخير ، ولم تظهر كلمة ( ZERO ) في النتائج ، ولكن دعونا نصلح الخطأ ونضيف رونقاً برمجياً باستخدام البلوك أو التركيب الكودي المسمى BEGIN ... END كما يلي:
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]USE [[/color][color=#0000bb]ESHOP[/color][COLOR=#007700]]
DECLARE @[/COLOR][COLOR=#0000bb]MyVar INT
SELECT [/COLOR][color=#007700]@[/color][color=#0000bb]MyVar [/color][color=#007700]= ([/color][color=#0000bb]SELECT COUNT[/color][color=#007700](*) [/color][color=#0000bb]FROM PRODUCTS[/color][COLOR=#007700])
IF @[/COLOR][color=#0000bb]MyVar [/color][color=#007700]= [/color][COLOR=#0000bb]0
BEGIN
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO'
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'ZERO INDICATES THAT YOU HAVE NO RECORDS'
[/COLOR][COLOR=#0000bb]END
[/COLOR][COLOR=#007700]ELSE
[/COLOR][COLOR=#0000bb]BEGIN
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'Not ZERO'
[/COLOR][color=#007700]PRINT [/color][COLOR=#dd0000]'YOU ALREADY HAVE AT LEAST OR MORE ONE RECORD'
[/COLOR][COLOR=#0000bb]END
[/COLOR][/COLOR]
وبذلك تمكنا من التغلب على المشكلة
بالتوفيق للجميع