त्रुटि कोड:1054. 'जहां खंड' में अज्ञात कॉलम 'एसपीए'
यह तब होता है जब आप इनपुट स्ट्रिंग को कोट्स के भीतर संलग्न नहीं करते हैं, और SQL इंजन इसे क्वेरी की जा रही तालिका में एक कॉलम के रूप में पहचानने की कोशिश करता है। लेकिन यह विफल हो जाता है क्योंकि यह इसे नहीं ढूंढ पाता है।
लेकिन क्या होता है जब उसे ऐसा कॉलम मिलता है?
जब यह कॉलम मानों पर कुछ मिलान पाता है तो यह परिणाम प्राप्त करता है।
जाहिर है कि यह वह नहीं है जिसकी कोई उम्मीद कर रहा था।
इस पर कैसे काबू पाएं? गतिशील इनपुट मूल्यों के साथ तैयार वक्तव्य का प्रयोग करें।
आप ?
. जैसे प्लेसहोल्डर का उपयोग कर सकते हैं संग्रहीत प्रक्रियाओं में भी गतिशील इनपुट मूल्यों पर Prepared Statements
के साथ उपयोग करने के लिए . SQL एक्सप्रेशंस में असाइन या तुलना किए जाने पर इंजन एस्केप कैरेक्टर और अन्य स्ट्रिंग मानों को हैंडल करेगा।
आपको बस आवश्यकता के अनुसार एक या अधिक सत्र चर के लिए प्रक्रिया इनपुट को फिर से असाइन करने की आवश्यकता है।
आपकी प्रक्रिया पर उदाहरण :
CREATE PROCEDURE `test1`( IN tab_name VARCHAR(40), IN w_team VARCHAR(40) )
BEGIN
SET @t1 = CONCAT( 'SELECT * FROM ', tab_name, ' where team = ?' ); -- <-- placeholder
SET @w_team := w_team;
PREPARE stmt3 FROM @t1;
EXECUTE stmt3 USING @w_team; -- <-- input for placeholder
DEALLOCATE PREPARE stmt3;
END;