Вобщем, похоже решил я проблему.
Думаю, что проблема была в том, что в запросе куча вложенных селектов и еще какие-то особенности Оракла.
Я подключался только к DBI, для обычного запроса этого было достаточно (причем попробовал под юниксом, там все работает с одним DBI). Но для винды похоже этого мало, не знаю почему. Я включил DBD::Oracle и случилось чудо: все заработало!
Запрос, ради интереса:
select
substr(:FirstDayOfMonth,5,2)||\'.\'||substr(:FirstDayOfMonth,1,4) Month,
MasterCardIssue.or_der Branch,
MasterCardIssue MasterCard,
nvl(VisaIssue,0) Visa from
(
select or_der, count(*) MasterCardIssue
from
(
select c.ncst,
case
when trim(substr(tadd4add,1,3))=\'33\' then \'VIP\'
when substr(num_otdel,1,2)>0 then \'Filial \'||substr(num_otdel,1,2)
when substr(num_otdel,4,2)>1 then \'DO \'||substr(num_otdel,4,2)
else \'Other\'
end or_der
from gcard c
,V_FORPOST_CARD_INFO v
,gaddress a
,grchadd ch
where
c.ncrd in
(
select ncrd from gcard
where
dopencrd>=to_date(:FirstDayOfMonth,\'yyyymmdd\') and dopencrd
and nbin in
(select nbin from gbin where nnet=1 and bin_description<>\'Administrative\')
)
and c.ncrd=v.ncrd(+)
and c.ncst=ch.ncst
and a.nadd=ch.NADD
)
group by
or_der
order by
or_der
) MasterCardIssue,
(
select or_der, count(*) VisaIssue
from
(
select replace(replace(replace(replace(replace(replace(replace(TNAMECST,\'IY\',\'Y\'),\'IJ\',\'J\'),\'J\',\'Y\'),\'Y\',\'I\'),\'KH\',\'H\'),\'KS\',\'X\'),\'\'\'\',\'\') TNAMECST,
replace(replace(replace(replace(replace(replace(replace(TFNAMCST,\'IY\',\'Y\'),\'IJ\',\'J\'),\'J\',\'Y\'),\'Y\',\'I\'),\'KH\',\'H\'),\'KS\',\'X\'),\'\'\'\',\'\') TFNAMCST,
or_der
from gpcstmer cst,
(
select c.ncst,
case
when trim(substr(tadd4add,1,3))=\'33\' then \'VIP\'
when substr(num_otdel,1,2)>0 then \'Filial \'||substr(num_otdel,1,2)
when substr(num_otdel,4,2)>1 then \'DO \'||substr(num_otdel,4,2)
else \'Other\'
end or_der
from gcard c
,V_FORPOST_CARD_INFO v
,gaddress a
,grchadd ch
where
c.ncrd in
(
select ncrd from gcard
where
dopencrd>=to_date(:FirstDayOfMonth,\'yyyymmdd\') and dopencrd
and nbin in
(select nbin from gbin where nnet=1 and bin_description<>\'Administrative\')
)
and c.ncrd=v.ncrd(+)
and c.ncst=ch.ncst
and a.nadd=ch.NADD
) c1
where
c1.ncst=cst.ncst
) s1,
(
select replace(replace(replace(replace(replace(replace(replace(TNAMECST,\'IY\',\'Y\'),\'IJ\',\'J\'),\'J\',\'Y\'),\'Y\',\'I\'),\'KH\',\'H\'),\'KS\',\'X\'),\'\'\'\',\'\') TNAMECST,
replace(replace(replace(replace(replace(replace(replace(TFNAMCST,\'IY\',\'Y\'),\'IJ\',\'J\'),\'J\',\'Y\'),\'Y\',\'I\'),\'KH\',\'H\'),\'KS\',\'X\'),\'\'\'\',\'\') TFNAMCST
from gpcstmer
where
ncst in
(
select ncst
from gcard
where
dopencrd >= to_date(:FirstDayOfMonth,\'yyyymmdd\')
and NBIN in
(
select nbin from gbin where nnet=2 and lower(bin_description) like \'%electron%\'
)
)
) s2
where
upper(s1.tfnamcst)=upper(s2.tfnamcst)
and upper(s1.tnamecst)=upper(s2.tnamecst)
group by
s1.or_der
order by
s1.or_der
) VisaIssue
where
MasterCardIssue.or_der=VisaIssue.or_der(+)
order by
MasterCardIssue.or_der