Слишком маленький буфер символьной строки - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть выбор:

select v.accs, v.currency,v.amount,v.drcr_ind, count(*) qua,wm_concat(ids) npx_IDS,
wm_concat(px_dtct) npx_DTCT 
from table v
group by accs, currency, amount, drcr_ind

но я получаю ошибку ORA-06502: PL / SQL:: буфер символьной строки слишком мал, если я удалю одну строку, потому что иногда (когда v.accs = 3570) count (*) = 215 но когда я пытаюсь пропустить использование wm_concat для v.accs = 3570, например, следующим образом:

select v.accs, v.currency,v.amount,v.drcr_ind, count(*) qua,wm_concat(ids) npx_IDS,
(case when v.accs = 3570 then wm_concat(px_dtct) else 'too many' end) npx_DTCT 
from table v
group by accs, currency, amount, drcr_ind

У меня все еще такое же сообщение об ошибке. Но почему?

Ответы [ 3 ]

1 голос
/ 02 апреля 2010

Вы объединяете результаты запроса. Этот запрос может привести к большому количеству строк, поэтому в конечном итоге у вас закончится длина строки. Может быть, конкатенация не путь сюда. Зависит от того, чего вы хотите достичь, конечно.

0 голосов
/ 01 апреля 2010

Во-первых, как уже было сказано, вы должны переключить предложения then и else в своем запросе. Затем, я полагаю, вам следует аналогичным образом обработать ваш второй wm_concat, тот, который работает с ids.

select v.accs, v.currency,v.amount,v.drcr_ind, count(*) qua,
(case when v.accs = 3570 then 'too many' else wm_concat(ids) end) npx_IDS,
(case when v.accs = 3570 then 'too many' else wm_concat(px_dtct) end) npx_DTCT 
from table v
group by accs, currency, amount, drcr_ind

И, наконец, почему вы думаете, что только v.accs = 3570 может привести к ошибке 06502 перед вами? Я полагаю, вы должны справиться со всеми из них.

0 голосов
/ 01 апреля 2010

Почему?Поскольку вы по-прежнему используете wm_concat для accs = 3570 ... поменяйте местами THEN и ELSE выражения CASE

select v.accs, v.currency,v.amount,v.drcr_ind, count(*) qua,wm_concat(ids) npx_IDS,
       (case when v.accs = 3570 then 'too many' else wm_concat(px_dtct) end) npx_DTCT
  from table v group by accs, currency, amount, drcr_ind
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...