जब आप wm_concat का उपयोग करते हैं तो क्या आपको त्रुटि संदेश मिलता है? to_char जैसे कार्यों के विपरीत, यह wmsys के स्वामित्व में है और इसका उपयोग करने के लिए आपको wmsys.wm_concat का उपयोग करने की आवश्यकता हो सकती है। (जब तक आप निश्चित रूप से आवश्यक समानार्थी शब्द नहीं बनाते)।
अब वास्तविक प्रश्न के लिए,
इस तकनीक को स्ट्रिंग एग्रीगेशन कहा जाता है।
आपको यहां कई अन्य विकल्प मिल सकते हैं।
http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php अन्य तरीकों के लिए, http://asktom.oracle.com पर "stragg" खोजें। एक और उपयोगी लिंक :http://www.orafaq.com/node/2290
यह शायद सबसे अधिक उपयोग किया जाने वाला है। बहुत सी टीमें अपने स्वयं के कस्टम फ़ंक्शन लिखती हैं जो कमोबेश ऐसा ही करते हैं।
CREATE OR REPLACE FUNCTION get_employees (p_deptno in emp.deptno%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT ename FROM emp WHERE deptno = p_deptno) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
/
SHOW ERRORS
जबकि यह समाधान varchar2 और संख्या के लिए काम करता है, सबसे अच्छा सामान्य समाधान Oracle ODCIAggregate इंटरफ़ेस का उपयोग करके बनाया जा सकता है।
http://download-west .oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
इसके लिए कार्यान्वयन www.oracle-base.com पर पहले लिंक पर है