डायनामिक SQL का उपयोग करके किसी भी क्वेरी को निष्पादित करने और प्रभावित पंक्तियों की संख्या लौटाने वाला स्टोर्ड प्रोसीजर:
प्रोसीजर निर्माण:
mysql> Delimiter //
mysql> CREATE PROCEDURE `query`.`row_cnt` (IN command VarChar(60000))
-> BEGIN
-> SET @query = command;
-> PREPARE stmt FROM @query;
-> EXECUTE stmt;
-> SELECT ROW_COUNT() AS 'Affected rows';
-> END //
Query OK, 0 rows affected (0.00 sec)
mysql> Delimiter ;
उपयोग उदाहरण:
mysql> Create table Testing123(First Varchar(20), Second Varchar(20));
Query OK, 0 rows affected (0.48 sec)
mysql> CALL row_cnt("INSERT INTO testing123(First,Second) Values('Testing First','Testing Second');");
+---------------+
| Affected rows |
+---------------+
| 1 |
+---------------+
1 row in set (0.10 sec)
मुख्य घटक:
PREPARE- स्ट्रिंग से स्टेटमेंट तैयार करता हैEXECUTE- तैयार स्टेटमेंट निष्पादित करता हैROW_COUNT()- अंतिम स्टेटमेंट द्वारा प्रभावित पंक्तियां लौटाता हैDELIMITER- प्रोसीजर परिभाषा के लिए डिलीमीटर बदलता है
सावधानी: डायनामिक SQL (PREPARE/EXECUTE) SQL इंजेक्शन के लिए संवेदनशील हो सकता है। केवल विश्वसनीय इनपुट के साथ उपयोग करें।