mysql - Check var is NULL in stored procedure -


मेरे पास एक स्क्रिप्ट है जो सभी तालिकाओं को हटाती है।

  SET FOREIGN_KEY_CHECKS = 0; SET @tables = NULL; SELECT GROUP_CONCAT (table_schema, '।', Table_name) INTO @tables से info_schema.tables WHERE table_schema = 'mydb'; SET @tables = CONCAT ('ड्रॉप तालिका', @ टीबल्स); @tables से STMT तैयार करें; EXTUTE STMT; DEALLOCATE STMT; सेट FOREIGN_KEY_CHECKS = 1;   

यह केवल एक बार काम करता है - जब कम से कम एक मेज मौजूद है दूसरा रन मुझे एक त्रुटि देता है:

आपके SQL वाक्यविन्यास में एक त्रुटि है; लाइन 1 एसक्यूएल एसक्यूएल 9 1 पर पास नल का उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से संबंधित मैनुअल की जांच करें IF कथन का उपयोग करने की कोशिश कर रहा हूं, लेकिन यह अभी भी काम नहीं करता है:

  यदि @ tables सेट नहीं है तो टीटी सेट = CONCAT ('ड्रॉप टेबल', @ टीबल्स); @tables से STMT तैयार करें; EXTUTE STMT; DEALLOCATE STMT; अगर अंत;   

आपके SQL सिंटैक्स में एक त्रुटि है; मैनुअल जो अपने वाक्यविन्यास के निकट के उपयोग के लिए आपके MySQL सर्वर संस्करण से मेल खाती है, अगर 'टीटीएस' टील्स एसयूटी सेट @ टीबल = CONCAT ('DROP TABLE', @tables) 'लाइन 1 एसक्यूएल एसक्यूएल 8 1' P>

यदि इस स्थिति में उपयोग करने का सही तरीका है?

जब आप एक सत्र चर के लिए कोई मान निर्दिष्ट करते हैं और एक क्वेरी में उसी का उपयोग करते हैं तो इसका मान स्थान धारक को प्रतिस्थापित करेगा।

हो जाता है

  
  SELECT GROUP_CONCAT (table_schema, '।', Table_name) कोड> SELECT GROUP_CONCAT (table_schema, '।', Table_name) नल में   

जिसका बिल्कुल अर्थ नहीं है।

इसके बजाय आपको सीधे चर सेटिंग का उपयोग बिना पूर्व सेटिंग इसका मान।
इसलिए उपयोग नहीं करें

  SET @tables = NULL;   

और दूसरी बात, बयान ब्लॉक को डेटाबेस इंजिन द्वारा सीधे संकलित नहीं किया जा सकता है, जब तक कि उनके ब्लॉक को ब्लॉक के तहत परिभाषित नहीं किया जाता है। यह आम तौर पर एक संग्रहीत कार्यविधि या ट्रिगर का उपयोग करके किया जाता है। यदि एक प्रक्रिया के भीतर, वे BEGIN और END के बीच होना चाहिए।

तो निम्न गलत है:

  यदि @टीबल्स नहीं हैं तो सेट @ टीबल्स = CONCAT ('ड्रॉप टेबल', @ टीबल्स); @tables से STMT तैयार करें; EXTUTE STMT; DEALLOCATE STMT; अगर अंत;   

आपको स्कॉक्ड वैरिएबल्स का उपयोग करने के लिए एक संग्रहीत कार्यविधि के लिए परिभाषित एक वाक्य रचना का पालन करना चाहिए।

कृपया नीचे दिए गए संदर्भ के समान प्रश्न के उत्तर को देखें:

  1. इसका भी संदर्भ लें:।

Comments

Popular posts from this blog

python - how we can use ajax() in views.py in django? -

c - Performance of System() -

c++ - How to define methods in a base class that only work in derived classes? -