मैं एक MySQLstored प्रक्रिया में DROP TABLE IF EXISTS
उपयोग करने के लिए कैसे जानना चाहता हूँ में मौजूद है उपयोग करने के लिए। मैं एक नहीं बल्कि लंबे mySQL संग्रहित प्रक्रिया है कि काम का एक समूह और फिर परिणाम के साथ एक अस्थायी तालिका लोड होगा लिख रहा हूँ। हालांकि, मुझे यह काम करने में परेशानी हो रही है।कैसे ड्रॉप तालिका यदि एक MySQL संग्रहित प्रक्रिया
मैं अस्थायी तालिका बात करने के लिए कुछ तरीके देखा है। असल में, आप या तो अस्थायी तालिका बनाते हैं, उस पर काम करते हैं, और फिर इसे अंत में छोड़ देते हैं ... या यदि आप मौजूद हैं, तो इसे छोड़ दें, इसे बनाएं, और फिर अपना काम करें।
मैं इतना है कि आप हमेशा साफ की शुरू दूसरी विधि पसंद करते हैं, और यह मेज के अस्तित्व के लिए एक अंतर्निहित जांच है।
यह काम करता है:
DELIMITER//
DROP PROCEDURE IF EXISTS pTest//
CREATE PROCEDURE pTest()
BEGIN
CREATE TEMPORARY TABLE tblTest (
OrderDate varchar(200)
);
DROP TEMPORARY TABLE tblTest;
END//
DELIMITER ;
CALL pTest();
यह काम करता है:
DELIMITER//
DROP PROCEDURE IF EXISTS pTest//
CREATE PROCEDURE pTest()
BEGIN
DROP TEMPORARY TABLE tblTest;
CREATE TEMPORARY TABLE tblTest (
OrderDate varchar(200)
);
END//
DELIMITER ;
CALL pTest();
यहाँ मेरी उदाहरण हैं: लेकिन, मैं यह काम करने के लिए प्राप्त करने के लिए नहीं कर पा रहे यह नहीं करता है:
012,DELIMITER//
DROP PROCEDURE IF EXISTS pTest//
CREATE PROCEDURE pTest()
BEGIN
DROP TEMPORARY TABLE IF EXISTS tblTest;
CREATE TEMPORARY TABLE tblTest (
OrderDate varchar(200)
);
END//
DELIMITER ;
CALL pTest();
पहला 2 काम, लेकिन यदि वह तालिका मौजूद है (जैसे कि प्रक्रिया समाप्त नहीं हुई है या कुछ), तो यह स्पष्ट रूप से "टेबल tblTest मौजूद नहीं है" त्रुटि के साथ समाप्त होगा। गैर-कामकाजी उदाहरण वह है जो मैं ढूंढ रहा हूं - यदि वहां है तो तालिका को छोड़ दें और फिर इसे फिर से बनाएं ताकि मैं साफ़ कर सकूं।
यह लगता है जैसे यह "अगर मौजूद है" बनाने इस बात असफल है। मैंने सभी प्रकार की साइटों से कोड कॉपी किया है जो चीजों को बहुत समान करते हैं और किसी भी मामले में मुझे काम करने के लिए "ड्रोप टेबल अगर EXISTS ..." मिल सकता है। कभी।
देव सर्वर: सर्वर संस्करण: 5.1.47-समुदाय प्रॉड सर्वर: सर्वर संस्करण: 5.0.45-लॉग इन करें
हम डाटाबेस संस्करणों को बदल नहीं सकते (DBAs यह अनुमति नहीं दी जाएगी), इसलिए मैं जो कुछ भी कर रहा हूं उस पर अटक गया हूं। क्या यह mySQL में या प्रक्रिया में एक बग है?
धन्यवाद।
मैं शायद वास्तविक त्रुटि है कि मैं पाने के पोस्ट किया है चाहिए ... [अं] 1064 - आप अपने एसक्यूएल वाक्य रचना में एक त्रुटि है, '// DELIMITER के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैन्युअल की जांच करें; कॉल pTest() 'लाइन 7 पर बस को हटाने "अगर मौजूद है" त्रुटि और पूरे proc काम करता है समाप्त, चल रहा है कि सटीक बयान मुझे एक ही त्रुटि देता है –