listagg ओरेकल 11.2 में पेश किया गया एक फ़ंक्शन है! अब इस समारोह हमें आवंटित, हम Oracle करने के लिए MySQL से माइग्रेट कर रहे हैं गुस्सा दिलाना है और हम इस प्रश्न हैं:ओरेकल में listagg के विकल्प?
SELECT
p_id,
MAX(registered) AS registered,
listagg(MESSAGE, ' ') within GROUP (ORDER BY registered) AS MESSAGE
FROM
umm_parent_id_remarks_v m
GROUP BY
m.p_id;
है जहाँ तक MySQL में ठीक काम करता है के रूप में हम जानते हैं क्या हमें गुस्सा दिलाना ओरेकल किया जा रहा है यह VARCAR और नहीं देता है सीएलओबी की जरूरत है! टेक्स्ट बहुत बड़ा है और हमें इसकी आवश्यकता है CLOB!
यहां मैंने जो करने की कोशिश की है!
सीएलओबी प्रकार की एक सीएलओबी_T तालिका बनाएं!
तो अब समारोह
create or replace
function listaggclob (t in clob_t)
return clob
as
ret clob := '';
i number;
begin
i := t.first;
while i is not null loop
if ret is not null then
ret := ret || ' ';
end if;
ret := ret || t(i);
i := t.next(i);
end loop;
return ret;
end;
बनाने अगर मैं इसे चलाएँ:
SELECT
p_id,
MAX(registered) AS registered,
listaggclob(cast(collect (MESSAGE) as clob_t)) MESSAGE
FROM
umm_parent_id_remarks_v m
GROUP BY
m.p_id;
मैं
ORA-22,814: विशेषता या तत्व मान प्रकार में निर्दिष्ट से बड़ा है
क्या इसके लिए कोई समाधान है?
आप धन्यवाद
+1 संग्रह लिंक के लिए धन्यवाद! – tbone
मैंने अपना खुद का काम लिखा और मैंने अपना प्रश्न अपडेट किया, कृपया मेरे प्रश्न की फिर से समीक्षा करें, धन्यवाद –
मुझे नहीं पता कि आपको यह त्रुटि क्यों मिल रही है - शायद यह एक नए प्रश्न के रूप में पोस्ट करने लायक है, आपको अधिक लोग मिलेंगे इस तरह से देख रहे हैं। –