, . , / , . , . , , . , ( Oracle), - , , , .:)
DECLARE
coll DBMS_SQL.VARCHAR2A;
swapped BOOLEAN;
tmp VARCHAR2(10);
BEGIN
select dbms_random.string('l',10) rand_string
BULK COLLECT INTO coll
from dual
connect by level <= 10;
LOOP
swapped := false;
FOR i IN 2 .. coll.LAST
LOOP
IF coll(i-1) > coll(i)
THEN
-- swap records
tmp := coll(i);
coll(i) := coll(i-1);
coll(i-1) := tmp;
swapped := true;
END IF;
END LOOP;
-- If we passed through table without swapping we are done, so exit
EXIT WHEN NOT swapped;
END LOOP;
FOR i in coll.FIRST .. coll.LAST
LOOP
dbms_output.put_line(coll(i));
END LOOP;
END;
/