Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
Погогите разобраться.вот такой запрос
SQL> select   t.concd, c.condesc,
  2                          nvl(decode(c.deltype,'M',substr(fn_delmnth(t.del),4), fn_delmnth(t.del)),' '),
  3                          nvl(pkg_contval.price_display(t.strike, t.concd, 'S'),' '),
  4                          nvl(pkg_contval.price_display(p.settpr, t.concd, 'P'),' '),
  5                          sum(decode(t.bs,'S',t.cllotop, -t.cllotop)),
  6                          sum(decode(t.bs,'S',t.cllotop,0)),
  7                          sum(decode(t.bs,'B',-t.cllotop,0)),
  8                          nvl(pkg_contval.avgprice(t.compcd, t.broker, t.concd, t.del, 
  9                          t.strike, t.lotsize, sum(decode(t.bs,'S',t.cllotop, -t.cllotop))),' ')
 10              from      trad_clear t, con_mast c, marg_calcmd_vw1 m, prices p
 11              where   t.broker = 'BROKER01'
 12              and       t.ccy = 'EUR'
 13              and       t.compcd = 'LON'
 14              and       t.repno > -1
 15              and       m.mgcashgp = 'CASH'
 16              and       c.mgcalcmd = m.mgcalcmd(+)
 17              and       c.contype != 'FX'
 18              and       t.concd = p.concd(+)
 19              and       nvl(t.del,'~') = nvl(p.del(+),'~')
 20              and       nvl(t.strike,-1) = nvl(p.strike(+),-1)
 21              and       t.lotsize = p.lotsize(+)
 22              and       t.concd = c.concd
 23              and       t.cllotop > 0
 24              group    by t.concd, c.condesc, t.del, c.deltype, t.strike,              t.lotsize,
 t.strikeseq, p.settpr, t.compcd, t.broker
 25  /

CONCD           CONDESC                                  NVL(DECOD
--------------- ---------------------------------------- ---------
NVL(PKG_CONTVAL.PRICE_DISPLAY(T.STRIKE,T.CONCD,'S'),'')
--------------------------------------------------------------------------------
...
А когда к ниму же добавляю
order     by t.concd, fn_delmnth(t.del), t.strike;
Получаю ошибку
ERROR at line 8:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "ECLIPSE.PKG_CONTVAL", line 913
ORA-06512: at line 1
Причем пробовал и выносить ордер во внешний запрос, чтоб не было функции в выражении с ордер, и задавать ордер по порядку столбцов. Ошибка вылетает все время.
3 июл 08, 13:56    [5881396]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
1) версию сервера опубликуйте
2) попробуйте материализовать запрос до его сортировки (9i+ напр. with с хинтом materialize)
3 июл 08, 14:23    [5881571]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
_мухомор
Guest
ddelete
[/src]Получаю ошибку
ERROR at line 8:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "ECLIPSE.PKG_CONTVAL", line 913
ORA-06512: at line 1


Совершенно ясно написано: ошибка возникла в пакете ECLIPSE, функция PKG_CONTVAL, строка пакета 913. Вот туда и смотрите.
3 июл 08, 14:24    [5881580]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
_мухомор
Guest
Извиняюсь: пакет PKG_CONTVAL, строка пакета 913
3 июл 08, 14:26    [5881590]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
orawish
1) версию сервера опубликуйте
2) попробуйте материализовать запрос до его сортировки (9i+ напр. with с хинтом materialize)

к сожалению именно на этом сервере
Oracle8i Release 8.1.7.2.0 - Production
PL/SQL Release 8.1.7.2.0 - Production
CORE 8.1.7.0.0 Production
TNS for Solaris: Version 8.1.7.2.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
3 июл 08, 14:29    [5881606]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
_мухомор

Совершенно ясно написано: ошибка возникла в пакете ECLIPSE, функция PKG_CONTVAL, строка пакета 913. Вот туда и смотрите.

А почему она не возникает, когда нет сортировки ?
3 июл 08, 14:32    [5881629]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ddelete
_мухомор

Совершенно ясно написано: ошибка возникла в пакете ECLIPSE, функция PKG_CONTVAL, строка пакета 913. Вот туда и смотрите.

А почему она не возникает, когда нет сортировки ?

просто вы не дофетчиваете строки с кривыми данными, а в случае сортировки - таки наоборот.
(кстати, о вас, в плане описания проблемы это вполне кое-что говорит ;)
3 июл 08, 14:38    [5881673]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
orawish

просто вы не дофетчиваете строки с кривыми данными, а в случае сортировки - таки наоборот.

точно...
причем оно не ругаеться а просто не все отфетчивает.
121 rows selected.

SQL> select count(*) from (select   t.concd, c.condesc, 
  2                          nvl(decode(c.deltype,'M',substr(fn_delmnth(t.del),4), fn_delmnth(t.del)
....
 25  /

  COUNT(*)
----------
       131
orawish

(кстати, о вас, в плане описания проблемы это вполне кое-что говорит ;)

ээээ что-то я недопонимаю намека;) обьясните ?
3 июл 08, 14:46    [5881739]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ddelete
..ээээ что-то я недопонимаю намека;) обьясните ?

намек на то, что вы уже, имхо, поняли -- диагноз, который вы поставили изначально - не верен.

не падает/не_падает а падает_на_первых_строках/падает_на_не_первых_строах :)
3 июл 08, 14:50    [5881775]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
orawish
ddelete
..ээээ что-то я недопонимаю намека;) обьясните ?

намек на то, что вы уже, имхо, поняли -- диагноз, который вы поставили изначально - не верен.

не падает/не_падает а падает_на_первых_строках/падает_на_не_первых_строах :)

ага. спасибо :)
найду сначала запись на которой падает, а потом буду дальше думать что делать :)
3 июл 08, 14:54    [5881804]     Ответить | Цитировать Сообщить модератору
 Re: order by вызывает ошибку ORA-01422  [new]
ddelete
Member

Откуда:
Сообщений: 203
всем спасибо:)
нашел глючную запись.
тему закрываем.
3 июл 08, 15:09    [5881937]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить