किसी तालिका की सभी पंक्तियों के माध्यम से लूप करने के लिए, MySQL में संग्रहीत कार्यविधि का उपयोग करें। वाक्य रचना इस प्रकार है -
<पूर्व> सीमांकक // अपना प्रक्रिया नाम बनाएं () BEGINDECLARE anyVariableName1 INT DEFAULT 0; किसी भी VariableName2 को डिफ़ॉल्ट 0 घोषित करें; अपने TableName1 से किसी भी VariableName1 में काउंट (*) चुनें; ..N) अपने TableName1 से चुनें (yourColumnName1,...N)किसी भी VariableName2,1 को सीमित करें; AnyVariableName2 =anyVariableName2+1;END WHILE;End;// सेट करेंउपरोक्त सिंटैक्स को समझने के लिए, आइए हम दो टेबल बनाते हैं यानी एक में रिकॉर्ड हैं और दूसरी टेबल में संग्रहित प्रक्रियाओं का उपयोग करके लूप से रिकॉर्ड होंगे।
पहली तालिका बनाने की क्वेरी निम्नलिखित है -
mysql> तालिका बनाएं AllRows -> ( -> Id int, -> Name varchar(100) -> );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.46 सेकंड)
इंसर्ट कमांड का उपयोग करके पहली तालिका में कुछ रिकॉर्ड डालें। क्वेरी इस प्रकार है -
mysql> AllRows मानों (1, 'जॉन') में डालें; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.12 सेकंड) mysql> AllRows मानों में डालें (100, 'कैरोल'); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.13 सेकंड) )mysql> AllRows मानों (300, 'सैम') में डालें; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.15 सेकंड) mysql> AllRows मानों में डालें (400, 'माइक'); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.20 सेकंड)पूर्व>चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें। क्वेरी इस प्रकार है -
mysql> AllRows से *चुनें;आउटपुट
<पूर्व>+----------+----------+| आईडी | नाम |+----------+----------+| 1 | जॉन || 100 | कैरल || 300 | सैम || 400 | माइक | +----------+----------+4 पंक्तियाँ सेट में (0.00 सेकंड)
दूसरी तालिका बनाने की क्वेरी यहां दी गई है। तालिका बनाने की क्वेरी इस प्रकार है -
mysql> तालिका बनाएं SecondTableRows -> ( -> StudentId int, -> StudentName varchar(100) -> );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.54 सेकंड)
अब आप संग्रहीत कार्यविधि का उपयोग करके तालिका की सभी पंक्तियों के माध्यम से लूप कर सकते हैं। संग्रहित प्रक्रिया इस प्रकार है -
mysql> delimiter //mysql> क्रिएट प्रोसेस Sp_AllRowsOfATable() -> BEGIN -> DECLARE lastRows INT DEFAULT 0; -> डिक्लेयर स्टार्टरो इंट डिफॉल्ट 0; -> अंतिम पंक्तियों में AllRows से COUNT(*) चुनें; -> सेट स्टार्टरो =0; -> स्टार्टरो के दौरान -> सेट स्टार्टरो =स्टार्टरो + 1; -> अंत में; -> अंत; ->//क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.22 सेकंड)mysql> सीमांकक;
कॉल कमांड का उपयोग करके संग्रहीत प्रक्रिया को कॉल करें। वाक्य रचना इस प्रकार है -
कॉल yourStoreedProcedureName;
उपरोक्त संग्रहीत प्रक्रिया को पहली तालिका की सभी पंक्तियों के माध्यम से लूप करने के लिए कॉल करें। क्वेरी इस प्रकार है -
mysql> कॉल Sp_AllRowsOfATable();क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.61 सेकंड)
संग्रहीत कार्यविधि को कॉल करने के बाद, आइए देखें कि दूसरी तालिका के साथ क्या हुआ। क्वेरी इस प्रकार है -
mysql> SecondTableRows से StudentId चुनें;