Собственно, задача уже решена — просто хочу поделиться материалом, т.к. в русскоязычном инете нихрена нет.
И так, задача отсортировать символы внутри строки.
-- Глобальный тип.
CREATE TYPE char_table_t IS TABLE OF CHAR(1);
CREATE OR REPLACE FUNCTION SORT_STRING_INSIDE(p_str VARCHAR2) RETURN VARCHAR2 DETERMINISTIC AS
        n NUMBER;
        s VARCHAR2(256);
        st char_table_t := char_table_t();
BEGIN
        FOR n IN 1..LENGTH(p_str)
        LOOP
                st.EXTEND;
                st(n) := SUBSTR(p_str, n, 1);
        END LOOP;
        SELECT CAST(MULTISET(SELECT * FROM TABLE(st) ORDER BY 1) AS char_table_t)
        INTO st
        FROM DUAL;
        
        FOR n IN st.FIRST..st.LAST  
        LOOP
                s := s || st(n);
        END LOOP;
        
        RETURN s;
END;
Тестим:
SELECT SORT_STRING_INSIDE('6CD25A3478') str FROM DUAL;
str
----------
2345678ACD
Метод "SELECT CAST(MULTISET(..." также можно использовать для сортировки других типов, но тип коллекции должен быть объявлен глобально — с локальными типами Oracle работать не желает (и прямо об этом говорит).
Об этом тут: 
http://technology.amis.nl/blog/1217/sorting-plsql-collections-the-quite-simple-way-part-two-have-the-sql-engine-do-the-heavy-lifting