teapot25
Дата: 04.12.2007 10:10:05
У меня следующая проблема:
Есть запрос:
insert into adwh.tmp_contract_scheme (application_id, scheduler_scheme, source_system)
select num, replace(ltrim(replace((sys_connect_by_path(dt, ' ')), '.', '')),' ', '_') dline
from (
select t.num,
t.dt,
row_number() over (partition by t.num order by t.dt) rn,
count(*) over (partition by t.num) cnt
from ( select c.application_id num, c.due_date dt
from adwh.contract_scheduler c
) t
order by t.num, t.dt
) v
where v.rn = v.cnt
start with v.rn = 1
connect by prior v.num = v.num
and v.rn = prior v.rn + 1;
Запускаю отдельно - все хорошо, нормально отрабатывает.
Если этот же запрос вставить в процедуру и запускать по расписанию, возникает следующая ошибка:
ORA-30004: when using SYS_CONNECT_BY_PATH function, cannot have seperator as part of column value.
У меня в качестве разделителя стоит пробел. Если меняю на '\' то, все равно та же проблема.
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for 64-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
Подскажите, кто сталкивался...
Jannny
Дата: 04.12.2007 10:41:55
nls_date_fromat у Вас разный. Если, например, выводится дата с часами, то без пробела не обойдется.
Пишите явное приведение к строке, не оставляйте это на волю случая
teapot25 |
У меня в качестве разделителя стоит пробел. Если меняю на '\' то, все равно та же проблема. |
Может и так, надо было взять символ, которого в дате точно нет.
ЗЫ: А зачем Вам сортировка внутри подзапроса?