В Oracle (до 11.2): При использовании cast (collect (… )), как упорядочить результат?

Как мне упорядочить результат при использовании cast (collect (...))?

I есть функция GetStringForTable, определенная следующим образом:

FUNCTION GetStringForTable(vTable in TVarCharTable, vDelimeter in varchar default ',') return VarChar2 is
    aResult varchar2(32767);
    i int;
  begin
    if vTable.count = 0 then 
      return '';
    end if;

    for i in 1 .. vTable.Count loop
      if i > 1 then
        aResult := aResult || vDelimeter;
      end if;
      aResult := aResult || vTable(i);
    end loop;
    return aResult;
  end GetStringForTable;

И я использую ее так:

select
  name,
  rep.GetStringForTable
      ((
          Select 
            cast(collect(name) as TVarCharTable)  
          from 
            contacts
          where 
            debtoraccount = dt.accountnumber
      )
      ,', ' --Delimiter
      ) "Contacts" 
from debtable dt
where name like '%Svein%';

Проблема в том, что результат не упорядочен. Я получаю «Дэйв, Боб, Кэрол, Алиса», когда мне нужно «Алиса, Боб, Кэрол, Дэйв». Как мне заказать результат? Если бы я попробовал следующее, но ничего не работает:

select
  name,
  rep.GetStringForTable
      ((
          Select 
            cast(collect(name) as TVarCharTable)  
          from 
            contacts
          where 
            debtoraccount = dt.accountnumber
          order by name  <= ORA-00907: missing right parenthesis
      )
      ,', ' --Skilletegn
      ) "Contacts"
from debtable dt
where name like '%Svein%';

и

select
  name,
  rep.GetStringForTable
      ((
        select * from
        (
          Select 
            cast(collect(name) as TVarCharTable)  
          from 
            contacts
          where 
            debtoraccount = dt.accountnumber  <= ORA-00904: string: invalid identifier
          order by name
        )
      )
      ,', ' --Skilletegn
      ) "Contacts"
from debtable dt
where name like '%Svein%';

В идеале, я хотел бы сделать упорядочение без изменения функции GetStringForTable.

Кто-нибудь может помочь?

5
задан OMG Ponies 2 April 2011 в 04:59
поделиться