تقييم الموضوع :
  • 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 2008ٌ2 بالعربي أحمد النجار 2 629 07-11-16, 04:29 PM
آخر رد: thevirus
  كيفية عمل ftb للاسيكوال سيرفر WAEL ABED 1 40 31-10-16, 05:04 AM
آخر رد: أبو عمر
  [مقال] النسخ الاحتياطي التلقائي - Auto Back Up SQL Server Databases ابو ليلى 2 213 07-09-16, 03:53 AM
آخر رد: ابو ليلى
  [SQL] SQL SERVER 2012 adel27 1 484 21-12-15, 09:08 PM
آخر رد: عمر المستشار
  التعامل مع قواعد البيانات Sql Server 2005 خطوة بخطوة Mr. DotNet 10 6,433 29-03-15, 12:31 PM
آخر رد: العيد1403
  استنتاج الارقام العشوائية في ال SQL Server عمر المستشار 1 1,213 01-06-14, 11:03 AM
آخر رد: Sajad
  عمل ملف Script لقاعدة بيانات SQL من داخل برنامج Visual Studio Sajad 0 1,841 17-03-14, 08:36 PM
آخر رد: Sajad
  تنصيب ال SQl Server من خلال Configration File عمر المستشار 2 1,846 14-01-14, 04:58 PM
آخر رد: myalsailamy
  File table in SQL Server 2012 عمر المستشار 0 1,157 10-12-13, 11:33 AM
آخر رد: عمر المستشار
  كيفية تحويل mdf الى mdb أو accdb Sajad 0 1,651 04-07-13, 05:59 PM
آخر رد: Sajad

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


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