आप एक MySQL संग्रहीत प्रक्रिया में गतिशील एसक्यूएल का निर्माण और उपयोग कैसे करते हैं?MySQL संग्रहीत प्रक्रिया में डायनामिक एसक्यूएल कैसे करें
53
A
उत्तर
42
मुझे विश्वास नहीं है कि MySQL गतिशील एसक्यूएल का समर्थन करता है। आप "तैयार" कथन कर सकते हैं जो समान है, लेकिन अलग है।
mysql> PREPARE stmt FROM
-> 'select count(*)
-> from information_schema.schemata
-> where schema_name = ? or schema_name = ?'
;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE stmt
-> USING @schema1,@schema2
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.00 sec)
mysql> DEALLOCATE PREPARE stmt;
तैयार बयान अक्सर किसी क्वेरी के लिए एक कार्य योजना लागू करके देखने के लिए उपयोग किया जाता है:
यहाँ एक उदाहरण है। चूंकि उन्हें निष्पादित किया गया है कमांड और वर्ग को एक चर के लिए असाइन किया जा सकता है, आप गतिशील एसक्यूएल के समान व्यवहार को अनुमानित कर सकते हैं।
यहाँ एक अच्छा link इस बारे में है:
मत भूलना अंतिम पंक्ति का उपयोग कर stmt
पुनःआवंटन करने के लिए!
शुभकामनाएं!
91
5.0.13 के बाद, संग्रहित प्रक्रियाओं में, आप गतिशील एसक्यूएल का उपयोग कर सकते हैं:
delimiter //
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = CONCAT('SELECT ',col,' FROM ',tbl);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
delimiter ;
गतिशील एसक्यूएल कार्य या ट्रिगर में काम नहीं करता। अधिक उपयोग के लिए the MySQL documentation देखें।
2
आप उपयोगकर्ता-निर्धारित वेरिएबल
Server version: 5.6.25-log MySQL Community Server (GPL)
mysql> PREPARE stmt FROM 'select "AAAA" into @a';
Query OK, 0 rows affected (0.01 sec)
Statement prepared
mysql> EXECUTE stmt;
Query OK, 1 row affected (0.01 sec)
DEALLOCATE prepare stmt;
Query OK, 0 rows affected (0.01 sec)
mysql> select @a;
+------+
| @a |
+------+
|AAAA |
+------+
1 row in set (0.01 sec)
संबंधित मुद्दे
- 1. MySQL संग्रहीत प्रक्रिया त्रुटि
- 2. एसक्यूएल संग्रहीत प्रक्रिया
- 3. एमएस एसक्यूएल: संग्रहीत प्रक्रिया
- 4. SSRS MySQL संग्रहीत प्रक्रिया
- 5. MySQL संग्रहीत प्रक्रिया अनुमतियां
- 6. एसक्यूएल सर्वर - संग्रहीत प्रक्रिया
- 7. एक MySQL संग्रहीत प्रक्रिया में एक प्रिंट अनुकरण कैसे करें
- 8. संग्रहीत प्रक्रिया में एसक्यूएल त्रुटि कैसे प्राप्त करें
- 9. क्या मैं एसक्यूएल संग्रहीत प्रक्रिया
- 10. MySQL: दृश्य बनाम संग्रहीत प्रक्रिया
- 11. एसक्यूएल सर्वर - क्या संग्रहीत प्रक्रिया
- 12. MySQL संग्रहीत प्रक्रिया: IF THEN
- 13. mysql संग्रहीत-प्रक्रिया: बाहर पैरामीटर
- 14. एसक्यूएल संग्रहीत प्रक्रिया गुजर पैरामीटर
- 15. एसक्यूएल सर्वर: संग्रहीत प्रक्रिया में वैकल्पिक चर
- 16. किसी संग्रहीत प्रक्रिया से संग्रहीत प्रक्रिया को कैसे कॉल करें?
- 17. संग्रहीत प्रक्रिया को कैसे शेड्यूल करें?
- 18. SQLS कथन को mySQL संग्रहीत प्रक्रिया में कनवर्ट करें
- 19. उत्तीर्ण सूची <> एसक्यूएल संग्रहीत प्रक्रिया
- 20. आप MySQL में संग्रहीत प्रक्रिया को कैसे संपादित करते हैं?
- 21. एसक्यूएल थोक संग्रहीत प्रक्रिया कॉल सी #
- 22. संग्रहीत प्रक्रिया टी-एसक्यूएल अगर बूलियन चेक
- 23. कॉल संग्रहीत प्रक्रिया के भीतर एसक्यूएल सर्वर
- 24. संग्रहीत प्रक्रिया
- 25. डेटाबेस में MySQL चेतावनियां कैसे संग्रहीत करें?
- 26. MySQL संग्रहीत प्रक्रिया बनाम PHP स्क्रिप्ट
- 27. एसक्यूएल सर्वर संग्रहीत प्रक्रिया फ़ोल्डर/समूह
- 28. सभी MySQL संग्रहीत प्रक्रिया कॉल खोजें?
- 29. एसक्यूएल सर्वर संग्रहीत प्रक्रिया सीधे क्वेरी
- 30. टी-एसक्यूएल संग्रहीत प्रक्रिया स्क्रिप्ट बनाएं
यह काम नहीं कर रहा है का उपयोग कर गतिशील बयान के बाहर के माध्यम से पारित कर सकते हैं जब '?' तालिका नाम –
आप के माध्यम से इस कोशिश कर रहे हैं के स्थान पर है mysql कंसोल? या किसी अन्य विधि का उपयोग कर, यदि आप इसे कोड में उपयोग कर रहे हैं, तो आपके प्रदाता को इसका समर्थन करना होगा। –
स्पष्ट रूप से, वे भविष्य के संस्करणों के लिए [सटीक तत्काल] (http://dev.mysql.com/worklog/task/?id=2793) का अध्ययन कर रहे हैं। –