|
|
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
есть запрос, который работает при обычном вызове. select sysdate paymentdate1, (select max(pm2.paymentdate) from payment pm2 where pm2.payerid=4024969) paymentdate2 from dual union select z.paymentdate as paymentdate1, ( select max(pm1.paymentdate) from payment pm1 where pm1.paymentdate<z.paymentdate and pm1.payerid=4024969 ) as paymentdate2 from ( select pm.paymentdate from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) z order by 1 desc Если я пытаюсь вставить его в PLSQL - код, таким образом for FS in( select sysdate paymentdate1, (select max(pm2.paymentdate) from payment pm2 where pm2.payerid=4024969) paymentdate2 from dual union select z.paymentdate as paymentdate1, ( select max(pm1.paymentdate) from payment pm1 where pm1.paymentdate<z.paymentdate and pm1.payerid=4024969 ) as paymentdate2 from ( select pm.paymentdate from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) z order by 1 desc) loop ... end loop; То получаю сообщение, что мол мой вложеный селект не ожидался. Научите, как побороть это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 11:09 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
Поставить версию Oracle поновее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 11:28 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
До чего обидно. пытался вставить в код функции. рабочий запрос select months_between(r1,r2) from( select sysdate r1, (select max(nvl(pm2.paymentdate,to_date('01.01.1999','dd.mm.yyyy'))) from payment pm2 where pm2.payerid=4024969) r2 from dual union all select z.paymentdate r1, ( select max(pm1.paymentdate) from payment pm1 where pm1.paymentdate<z.paymentdate and pm1.payerid=4024969 ) r2 from ( select distinct pm.paymentdate from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) z ) where months_between(r1,r2)>1 и в результате оракле ругается на (select max(nvl(.... Я уж без for FS in( - пытался. А все зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 11:48 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
I pravil'no rugaetsya.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 11:58 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
надо писать INTO а то ему не понятно куда селек-то делать ? select ... into .... from ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 12:01 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
2 klavs:: select was opened in cursor's mode.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 12:03 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
klawsу я в курсе, что нада писать select ... into .... И я также в курсе, что такая конструкция тоже не работает - declare fs number(10,3); begin select months_between(r1,r2) into fs from( select sysdate r1, (select max(nvl(pm2.paymentdate,to_date('01.01.1999','dd.mm.yyyy'))) from payment pm2 where pm2.payerid=4024969) r2 from dual union all select z.paymentdate r1, ( select max(pm1.paymentdate) from payment pm1 where pm1.paymentdate<z.paymentdate and pm1.payerid=4024969 ) r2 from ( select distinct pm.paymentdate from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) z ) where months_between(r1,r2)>1; end; A ГЛАВНОЕ, хочу спросить у Вас ЧТО МНЕ ДЕЛАТЬ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 12:31 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
Я же уже ответил, или переписать запрос без селекта на который ругаеться. Какая версия оракла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 12:51 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
Poidet? Select months_between(r1,r2) from ( select sysdate r1 , pm.paymentdate r2 , max(nvl(pm2.paymentdate,to_date('01.01.1999','dd.mm.yyyy')) OVER (PARTITION BY pm.payerid) AS rmax from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) where r2 = rmax and months_between(r1,r2)>1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 13:20 |
|
||
|
не работает запрос в PLSQL
|
|||
|---|---|---|---|
|
#18+
версия Oracle 8i а такое вот работает declare -- Local variables here TYPE cv_typ IS REF CURSOR; cv cv_typ; r11 number(10,2); begin -- Test statements here OPEN cv FOR ' select r1 from( select months_between(sysdate, (select max(pm2.paymentdate) from payment pm2 where pm2.payerid=4024969)) r1 from dual union select months_between(z.paymentdate, ( select max(pm1.paymentdate) from payment pm1 where pm1.paymentdate<z.paymentdate and pm1.payerid=4024969 )) r1 from ( select pm.paymentdate from payment pm where pm.payerid=4024969 order by pm.paymentdate desc) z )'; LOOP FETCH cv INTO r11; EXIT WHEN cv%NOTFOUND; DBMS_OUTPUT.PUT_LINE ( TO_CHAR (r11)); END LOOP; CLOSE cv; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2003, 13:33 |
|
||
|
|

start [/forum/search_topic.php?author=Nevge&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
194ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 1214ms |
| total: | 1547ms |

| 0 / 0 |
