منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيفية استخدام IF داخل SQL Server
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : 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]





وبذلك تمكنا من التغلب على المشكلة

بالتوفيق للجميع