2009-03-09 15 views
9

मेरे पास कुछ कर्सर के साथ एक MySQL संग्रहीत प्रक्रिया है। मैं क्लाइंट को आउटपुट भेजने के लिए एक मूल्य मुद्रित करना चाहता हूं। SQLyog Enterpriseएक MySQL संग्रहीत प्रक्रिया में एक प्रिंट अनुकरण कैसे करें

मैंने एक वैरिएबल को टेक्स्ट के रूप में घोषित करने और लूप के अंदर संयोजित करने की कोशिश की लेकिन यह काम नहीं करता है, कम से कम जिस तरह से मैं इसे करने की कोशिश नहीं कर रहा था।

DECLARE _output TEXT; 
DECLARE _ID INT DEFAULT 0; 
DECLARE cur1 CURSOR FOR SELECT ID FROM CodeID; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 

OPEN cur1; 

REPEAT 
    FETCH cur1 INTO _ID; 
    IF NOT done THEN 
    SET _output = _ID; /*SEE ALT BELOW*/ 

    END IF; 
UNTIL done END REPEAT; 
CLOSE cur1; 

SELECT _output; 

मैं कोशिश की है:

SET _output = _output + _ID 

और

SET _output = CONCAT(_output,_ID) 

लेकिन वे दोनों सिर्फ शून्य

SET _output = _ID; लौट सिर्फ मेरे पिछले लाए जाने पंक्ति देता है। जो मददगार है लेकिन पूरी तरह से मैं नहीं चाहता था।

MySQL संग्रहित प्रक्रिया में MySQL प्रिंट को पुन: उत्पन्न करने के लिए प्रत्येक fetched पंक्ति आउटपुट स्क्रीन पर रखने का सबसे अच्छा तरीका क्या है?

उत्तर

14

आप इसे अपने SELECT _output के साथ सही तरीके से कर रहे हैं; आईएनटीओ क्लॉज के बिना चुने गए कुछ भी ग्राहक को वापस कर दिए जाएंगे।

उन सभी को प्राप्त करने के लिए, आप या तो लूप में चयन को स्थानांतरित कर सकते हैं (प्रत्येक को अलग-अलग प्रिंट करने के लिए), या आप उन्हें एक साथ जोड़ सकते हैं। आपके कॉन्सट रिटर्निंग न्यूल के साथ समस्या इसलिए थी क्योंकि आपने _output को कुछ भी शुरू नहीं किया था, इसलिए यह शून्य था। एनयूएलएल के साथ कुछ भी जुड़ाव वापस लौटाएगा।

DECLARE _output TEXT DEFAULT ''; 
DECLARE _ID INT DEFAULT 0; 
DECLARE cur1 CURSOR FOR SELECT ID FROM CodeID; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 

OPEN cur1; 

REPEAT 
    FETCH cur1 INTO _ID; 
    IF NOT done THEN 
    SET _output = CONCAT(",", _ID); /*SEE ALT BELOW*/ 

    END IF; 
UNTIL done END REPEAT; 
CLOSE cur1; 

SELECT _output; 
+6

कि हो '_output सेट = concat नहीं करना चाहिए (_output," ", _ id);' अन्यथा यह केवल पिछले आईडी होगा:

निम्नलिखित का प्रयास करें – Marcus

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