تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية استخدام IF داخل SQL Server
#1
كاتب الموضوع : 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]





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

بالتوفيق للجميع
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طريقة عرض الأيام باللغة العربية في استعلام SQL Server ggtt17121985 0 1,064 12-10-23, 10:22 PM
آخر رد: ggtt17121985
  مساعده في تثبيت SQL Server Owz 1 437 22-09-23, 01:54 AM
آخر رد: Taha Okla
Photo [SQL] رسالة خطأ عند تنصيب sql server 2008 عثمان محمد جبور 2 1,745 07-10-21, 09:02 AM
آخر رد: عثمان محمد جبور
  تاريخ تنصيب ال SQL Server وتاريخ الانتهاء للنسخة ال Evaluation عمر المستشار 1 3,194 21-01-21, 02:00 PM
آخر رد: akrem72
  كيفية تحويل mdf الى mdb أو accdb Sajad 1 7,119 05-09-20, 12:00 PM
آخر رد: awidan76
Star [سؤال] هل يمكن اضافة بيانات ل قواعد sql ب استخدام رساله نصيه sms Ayman abdullah 0 1,955 09-05-20, 11:06 AM
آخر رد: Ayman abdullah
  دورة في برنامج SQL Server 2008 تحت إشراف الاستاذ المهندس أحمد النجار ابو ابراهيم 2 6,321 15-04-20, 06:26 PM
آخر رد: nizar haider
  استفسار حول SQL SERVER MANGER mne3000 1 1,758 05-04-20, 01:21 AM
آخر رد: محمد كريّم
  max From views in sql server nabil.1710 2 2,280 15-01-20, 04:57 AM
آخر رد: EYADISMAIL
  مشكلة في تحميل sql server 2014 انيس القبائلي 0 1,839 09-01-20, 08:22 PM
آخر رد: انيس القبائلي

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم