2012-04-03 13 views
6

मैं संग्रहित प्रक्रिया में पैरामीटर के रूप में तालिका फ़ील्ड नाम पास कर रहा हूं लेकिन संग्रहीत प्रक्रिया फ़ील्ड नाम के बजाय फील्ड नाम को मूल्य के रूप में लेती है और त्रुटि फेंकता है।MySQL संग्रहीत प्रक्रिया में पैरामीटर के रूप में पासिंग फील्ड नाम

उदाहरण के लिए यदि मैं मान पास करता हूं तो पैरामीटर फील्डनाम के माध्यम से सक्षम है, MySQL त्रुटि फ़ील्ड सूची में त्रुटि अज्ञात कॉलम 'isEnabled' फेंकता है, जो दिखाता है कि mysql स्वचालित रूप से उद्धरण जोड़ता है।

यहां मैंने नमूना संग्रहित प्रक्रिया लिखा है।

CREATE `VSK_Comments_UpdateAction`(IN FieldName varchar(30),IN FieldValue tinyint,CID bigint) 
BEGIN 
Update comments Set FieldName=FieldValue WHERE commentid=CID; 
END; 

क्या कोई तरीका है ताकि मैं सही ढंग से फ़ील्ड नाम को गतिशील रूप से सही तरीके से पास कर सकूं।

उत्तर

7

आप prepared statements उपयोग कर सकते हैं, उदाहरण के लिए -

CREATE `VSK_Comments_UpdateAction`(IN FieldName varchar(30),IN FieldValue tinyint,CID bigint) 
BEGIN 
    SET @query = CONCAT('Update comments Set ', FieldName, '=? WHERE commentid=?'); 
    PREPARE stmt FROM @query; 
    SET @FieldValue = FieldValue; 
    SET @CID = CID; 
    EXECUTE stmt USING @FieldValue, @CID; 
    DEALLOCATE PREPARE stmt; 
END; 
+0

धन्यवाद, इसकी अच्छी तरह से काम करते हुए समाधान से पैरामीटर मान गुजर। – irfanmcsd

संबंधित मुद्दे