प्रोग्राम प्रवाह को नियंत्रित करने के लिए IF और WHILE ब्लॉक का उपयोग करें

पूरा किया

सभी प्रोग्रामिंग भाषाओं में ऐसे तत्व शामिल होते हैं जो आपको प्रोग्राम के प्रवाह को निर्धारित करने में मदद करते हैं, या जिस क्रम में कथन निष्पादित किए जाते हैं। जबकि सी # जैसी भाषाओं के रूप में पूरी तरह से चित्रित नहीं किया गया है, टी-एसक्यूएल नियंत्रण-प्रवाह कीवर्ड का एक सेट प्रदान करता है जिसका उपयोग आप तर्क परीक्षण करने और अपने टी-एसक्यूएल डेटा हेरफेर बयानों वाले लूप बनाने के लिए कर सकते हैं। इस पाठ में, आप सीखेंगे कि T-SQL IF और WHILE कीवर्ड का उपयोग कैसे करें।

प्रवाह भाषा के T-SQL नियंत्रण को समझें

SQL सर्वर भाषा तत्व प्रदान करता है जो T-SQL बैच, संग्रहीत कार्यविधियों, और मल्टीस्टेटमेंट उपयोगकर्ता-परिभाषित कार्यों के भीतर प्रोग्राम निष्पादन के प्रवाह को नियंत्रित करता है। इन नियंत्रण-प्रवाह तत्वों का मतलब है कि आप प्रोग्रामेटिक रूप से यह निर्धारित कर सकते हैं कि बयानों को निष्पादित करना है या नहीं और प्रोग्रामेटिक रूप से उन बयानों के क्रम को निर्धारित करना है जिन्हें निष्पादित किया जाना चाहिए।

इन तत्वों में शामिल हैं, लेकिन इन तक सीमित नहीं हैं:

  • अगर।।। ELSE, जो बूलियन एक्सप्रेशन के आधार पर कोड निष्पादित करता है।
  • WHILE, जो एक लूप बनाता है जो एक शर्त प्रदान करता है वह सत्य है।
  • शुरू करना।।। END, जो T-SQL स्टेटमेंट की एक श्रृंखला को परिभाषित करता है जिसे एक साथ निष्पादित किया जाना चाहिए।
  • अन्य कीवर्ड, उदाहरण के लिए, BREAK, CONTINUE, WAITFOR, और RETURN, जिनका उपयोग T-SQL नियंत्रण-प्रवाह संचालन का समर्थन करने के लिए किया जाता है।

यहां IF कथन का एक उदाहरण दिया गया है:

IF OBJECT_ID('dbo.tl') IS NOT NULL
    DROP TABLE dbo.tl
GO

IF... का उपयोग करके अपने कार्यक्रमों में सशर्त तर्क का उपयोग करें ... के अलावा

अगर... ELSE संरचना का उपयोग T-SQL में विधेय के आधार पर कोड के ब्लॉक को सशर्त रूप से निष्पादित करने के लिए किया जाता है। IF कथन निर्धारित करता है कि निम्नलिखित कथन या ब्लॉक (यदि BEGIN... END का उपयोग किया जाता है) निष्पादित करता है। यदि विधेय TRUE का मूल्यांकन करता है, तो ब्लॉक में कोड निष्पादित होता है। जब विधेय FALSE या UNKNOWN का मूल्यांकन करता है, तो ब्लॉक निष्पादित नहीं होता है, जब तक कि वैकल्पिक ELSE कीवर्ड का उपयोग कोड के किसी अन्य ब्लॉक की पहचान करने के लिए नहीं किया जाता है।

निम्नलिखित IF कथन में, हम डेटाबेस से पूछ रहे हैं कि क्या OBJECT_ID NULL है, और यदि ऐसा है, तो PRINT कथन लौटाएँ। इस उदाहरण में, ऑब्जेक्ट नल नहीं है और इसलिए FALSE है, जिसका अर्थ है कि BEGIN/END कोड निष्पादित नहीं किया जाएगा। PRINT कथन केवल तभी निष्पादित किया जाएगा जब ऑब्जेक्ट डेटाबेस में मौजूद न हो.

USE TSQL;
GO
IF OBJECT_ID('HR.Employees') IS NULL --this object does exist in the sample database
BEGIN
    PRINT 'The specified object does not exist';
END;

केवल एक IF कथन के साथ उपरोक्त कोड के साथ सीमाओं के कारण, यह भ्रमित करने वाला हो सकता है। IF और ELSE को मिलाने से आपको अपने कोड में तर्क के साथ अधिक लचीलापन मिलता है, और आप कई ELSE कथनों का उपयोग कर सकते हैं। ELSE के उपयोग के साथ, आपके पास एक अन्य निष्पादन विकल्प होता है जब IF predicate FALSE या UNKNOWN का मूल्यांकन करता है, जैसा कि निम्न उदाहरण में है:

IF OBJECT_ID('HR.Employees') IS NULL --this object does exist in the sample database
BEGIN
    PRINT 'The specified object does not exist';
END
ELSE
BEGIN
    PRINT 'The specified object exists';
END;

डेटा हेरफेर संचालन के भीतर, EXISTS कीवर्ड के साथ IF का उपयोग करना कुशल अस्तित्व जांच के लिए एक उपयोगी उपकरण हो सकता है, जैसा कि निम्न उदाहरण में है:

IF EXISTS (SELECT * FROM Sales.EmpOrders WHERE empid =5)
BEGIN
    PRINT 'Employee has associated orders';
END;

WHILE कथनों का उपयोग करके लूपिंग को समझें

WHILE कथन का उपयोग विधेय के आधार पर लूप में कोड निष्पादित करने के लिए किया जाता है। IF कथन की तरह, WHILE कथन यह निर्धारित करता है कि निम्न कथन या अवरोधित करें (यदि BEGIN... END का उपयोग किया जाता है) निष्पादित करता है। लूप तब तक निष्पादित होता रहता है जब तक कि स्थिति TRUE का मूल्यांकन करती है। आमतौर पर, आप लूप को विधेय द्वारा परीक्षण किए गए चर के साथ नियंत्रित करते हैं और लूप के शरीर में ही हेरफेर करते हैं।

निम्न उदाहरण विधेय में @empid चर का उपयोग करता है और BEGIN में इसके मान को बदलता है... अंत ब्लॉक:

DECLARE @empid AS INT = 1, @lname AS NVARCHAR(20);
WHILE @empid <=5
   BEGIN
	SELECT @lname = lastname FROM HR.Employees
		WHERE empid = @empid;
	PRINT @lname;
	SET @empid += 1;
   END;

WHILE लूप में अतिरिक्त विकल्पों के लिए, आप प्रवाह को नियंत्रित करने के लिए CONTINUE और BREAK कीवर्ड का उपयोग कर सकते हैं।