Где ошибка в insert?!!

Alexus12
Дата: 04.10.2004 09:58:42
пытаюсь в процедуру внедрить такой кусок кода:

insert into T_MANBAL_PRN
(fdate, fcbr5, subref, fcurr, id_plansch, mng_ap, mng_group,
       mng_name, id_planias, fcount, fsumrur, fusdrate, 
       outrur, outusd, outoth, 
       fdateprev, fusername )
SELECT var_date, fcbr5, subref, fcurr, id_plansch, mng_ap, mng_group,
       mng_name, id_planias, fcount, fsumrur, fusdrate,
case when fcurr='01 RUR' then fsumrur else 0 end as OutRUR ,
case when fcurr='02 USD' then fsumrur else 0 end as OutUSD ,
case when fcurr='03 OTH' then fsumrur else 0 end as OutOTH ,
var_dateprev, sys_context ('USERENV','CURRENT_USER')
FROM v_manbal_out
where var_date=v_manbal_out.fdate;

ругается на первом case:
PLS-00103: encountered "CASE" when expecting ( - + mod null ....

при этом просто селект в SQLPlus работает:

SELECT fdate, fcbr5, subref, fcurr, id_plansch, mng_ap, mng_group,
       mng_name, id_planias, fcount, fsumrur, fusdrate,
case when fcurr='01 RUR' then fsumrur else 0 end as OutRUR ,
case when fcurr='02 USD' then fsumrur else 0 end as OutUSD ,
case when fcurr='03 OTH' then fsumrur else 0 end as OutOTH ,
sys_context ('USERENV','CURRENT_USER')
FROM v_manbal_out
что не так делаю?!!
Спасибо!
Elic
Дата: 04.10.2004 10:22:31
Версия Oracle-а небось <9 ?!
Это фича - разные движки чисто-SQL и SQL-в-PL/SQL. Второй всегда запаздывал по реализации новых фич.
Замени CASE на DECODE:
decode(fcurr, '01 RUR', fsumrur, 0) as OutRUR
Так оно даже короче :) А работает всегда.
Alexus12
Дата: 04.10.2004 11:06:58
Да, Oracle 8.1.7
DECODE заработало, спасибо
Жаль, что приходится дважды отлаживать