منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
كيفية استخدام IF داخل SQL Server - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم مقالات SQL SERVER (http://vb4arb.com/vb/forumdisplay.php?fid=84)
+--- الموضوع : كيفية استخدام IF داخل SQL Server (/showthread.php?tid=6623)



كيفية استخدام IF داخل SQL Server - RaggiTech - 21-10-12

كاتب الموضوع : 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]





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

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