Проблема может заключаться в том, что WM_CONCAT () пытается сгенерировать строку, превышающую ограничение на стороне базы данных в VARCHAR2, которое, я считаю, составляет 2000 символов. В коде PL / SQL ограничение велико - 32767, если я правильно помню. Возможно, вам придется разбить это на несколько запросов. Сначала сделайте суммирование
strAccount VARCHAR2(4);
strCurrency all_transactions.currency%type;
nAmount all_transactions.amount%type;
strModule all_transactions.module%type;
nQuantity NUMBER;
select substr(account,1,4), currency, amount, module, count(*) quan
into strAccount, strCurrency, nAmount, strModule, nQuantity
from all_transactions
group by substr(account,1,4), currency, amount, module
, затем наведите курсор, чтобы получить имена по отдельности и объединить их вместе на любом языке приложения, который вы используете. Если ваш код написан на PL / SQL, он может выглядеть так:
strNames VARCHAR2(32767);
FOR aRow in (select id
from all_transactions
where substr(account, 1, 4) = strAccount and
currency = strCurrency and
amount = nAmount and
module = strModule
order by id)
LOOP
strNames := strNames || aRow.id || ' ';
END LOOP
Конечно, это не самое элегантное решение в мире, но, учитывая, что WM_CONCAT здесь не практичен, вы можете застрять, делая что-то подобное.
Делись и наслаждайся.