Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कर्सर के लिए MySQL पास टेबल का नाम चुनें

मेरा मानना ​​है कि आप इसे इस तरह से नहीं कर सकते।

इसे प्राप्त करने के लिए, आपको डायनेमिक SQL का उपयोग करना चाहिए।

ध्यान दें कि आप डायनेमिक SQL का उपयोग करके भी कर्सर नहीं खोल सकते हैं। लेकिन आपके मामले में, ऐसा लगता है कि कर्सर की कोई आवश्यकता नहीं है।

अगर मैं आपके कोड को सही ढंग से समझता हूं, तो आप केवल उपयोगकर्ता चर का उपयोग कर सकते हैं और संभवतः 2 गतिशील रूप से तैयार किए गए कथनों का उपयोग करके आप जो करने का प्रयास कर रहे हैं उसे प्राप्त कर सकते हैं।

  SET @stmt_text=CONCAT("SELECT @score = SUM(`score`), @maxscore=SUM(`maxscore`) FROM ",                
                         answertable, "WHERE `idParticipation`= ",  partid);
  PREPARE stmt FROM @stmt_text;
  EXECUTE stmt USING @a;

और फिर आप नीचे दिए गए कथन का उपयोग करके मानों को अपडेट करते हैं

  SET @stmt_text=CONCAT("UPDATE", participationtable, " SET `score`[email protected],  
                      `maxscore`[email protected] WHERE `idParticipation`=", partid);

  PREPARE stmt FROM @stmt_text;
  EXECUTE stmt USING @a;

  DEALLOCATE PREPARE stmt;

नोट:कृपया सिंटैक्स की जाँच करें। मैं इसे ठीक से सत्यापित करने के लिए इसका परीक्षण नहीं कर सकता, लेकिन मुझे आशा है कि आपको यह विचार मिल गया होगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - समूह प्रकार से पहले और अंतिम रिकॉर्ड में शामिल हों?

  2. MySQL केस में मल्टीपल इंसर्ट स्टेटमेंट

  3. एक php/mysql वेब एप्लिकेशन में निराशावादी लॉकिंग कैसे कार्यान्वित करें?

  4. किसी अन्य ड्रॉपडाउन के आधार पर ड्रॉपडाउन को पॉप्युलेट करने का सबसे अच्छा और आसान तरीका क्या है

  5. MySQL से मित्र के नामों की सूची प्राप्त करना