MySQL

2012-10-24 19 views
6

में टेम्प टेबल या कर्सर का उपयोग करते समय अपेक्षित आउटपुट प्राप्त नहीं हो रहा है, मैं कुछ पीओसी कर रहा हूं। मैंने MySQL में एक संग्रहित प्रक्रिया लिखी है। मैं डेटाबेस ऑपरेशंस के लिए MySQLWorkbench का उपयोग कर रहा हूं जैसे नई टेबल, संग्रहित प्रक्रियाएं, क्वेरी निष्पादन इत्यादि बनाना। मैं कुछ अप्रत्याशित निष्पादन व्यवहार देख रहा हूं, भले ही कोड सही रूप से और तार्किक रूप से सही दिखता हो।MySQL

यहां अंक हैं।

दृष्टिकोण 1 -

पहले दृष्टिकोण में, मैं अस्थायी तालिका बना रहा हूं और INSERT INTO ... चयनित स्तंभों के साथ SELECT कथन का उपयोग कर रिकॉर्ड जोड़ने।

CREATE TEMPORARY TABLE XYZ(....); 

INSERT INTO XYZ (....) SELECT (....) FROM ABC WHERE clause; 

यह करने के बाद, मैं शून्य मान केवल अस्थायी तालिका के कॉलम और अन्य सभी अस्थायी तालिका स्तंभ की जोड़ी सही मान साथ आबादी वाले हो जाता है में मिलता है।

यदि मैं अलग-अलग SQL टैब में एक ही चयन कथन (उसी स्थान के लिए) चलाता हूं, तो मैं उन दो स्तंभों के लिए भी सही आउटपुट देख सकता हूं, जो temp तालिका में शून्य मान प्राप्त कर रहे हैं।

अगर मैं * (सभी स्तंभ) के साथ सम्मिलित करें INTO..SELECT बयान ऊपर बदलने के लिए, तो मैं अस्थायी तालिका में सही आउटपुट प्राप्त ..

INSERT INTO XYZ SELECT * FROM ABC WHERE clause; 

लेकिन सभी कॉलम नहीं करना चाहती। मैंने इंजन = मूल्य के साथ temp तालिका बनाने का भी प्रयास किया। लेकिन काम नहीं किया। यहां तक ​​कि मैं (अस्थायी) के बिना सामान्य तालिका के साथ सभी इस दृष्टिकोण की कोशिश की, लेकिन दुर्भाग्य से

दृष्टिकोण 2 -

दूसरा दृष्टिकोण में, मैं कर्सर बजाय अस्थायी तालिका के साथ एक ही संग्रहीत प्रक्रिया संशोधित। लेकिन इस मामले में कर्सर को कोई रिकॉर्ड नहीं मिल रहा है।

DECLARE cur1 CURSOR FOR SELECT (....) FROM ABC WHERE clause; 

यदि मैं अलग SQL टैब में एक ही चयन कथन (उसी स्थान के लिए) चलाता हूं, तो मैं सही आउटपुट देख सकता हूं।

क्या मैं कुछ गलत कर रहा हूं? क्या मुझे इस पर कोई सुझाव मिल सकता है?

अग्रिम धन्यवाद।

+2

क्या आप SELECT कथन में चुने गए कॉलम, साथ ही साथ स्रोत और temp तालिका के लिए तालिका संरचना दिखा सकते हैं? यह देखने के लिए मुश्किल है कि इसके बिना क्या हो रहा है। – SchmitzIT

+0

धन्यवाद Schmitz वापस पाने के लिए। मैं देर से जवाब देने के लिए क्षमा चाहता हूँ। असल में मैंने दृष्टिकोण # 1 में समस्या का पता लगाया था। मूल कारण वैरिएबल नाम था जो IN पैरामीटर में से एक के रूप में उपयोग किया जाता था। मैंने अपने तालिका कॉलम नाम के समान वैरिएबल नाम का उपयोग किया था। और यही कारण है कि, मेरा मानना ​​है कि, किसी भी तरह यह वास्तविक तालिका मूल्यों को लिखने पर था। मैंने परिवर्तनीय नाम बदल दिया और मेरी संग्रहित प्रो सही ढंग से चल गई। आपकी मदद के लिए धन्यवाद। –

+1

कृपया इसे एक उत्तर के रूप में पोस्ट करें और इसे स्वीकार करें, ताकि आपका प्रश्न अब लंबित के रूप में प्रदर्शित न हो। – RandomSeed

उत्तर

1

मैंने दृष्टिकोण # 1 में समस्या का पता लगाया था। मूल कारण वैरिएबल नाम था जो IN पैरामीटर में से एक के रूप में उपयोग किया जाता था। मैंने अपने तालिका कॉलम नाम के समान वैरिएबल नाम का उपयोग किया था। और यही कारण है कि, मेरा मानना ​​है कि, किसी भी तरह यह वास्तविक तालिका मूल्यों को लिखने पर था। मैंने परिवर्तनीय नाम बदल दिया और मेरी संग्रहित प्रो सही ढंग से चल गई।