Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему функция выдает ошибку? / 3 сообщений из 3, страница 1 из 1
11.11.2002, 12:18
    #32066391
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему функция выдает ошибку?
Почему функция выдает ошибку?
Привожу полный текст страшного кода(такое пишу 2-й раз в жизни)
Типы:
create or replace type regionroute as object
( ulica varchar2(50),
domn integer,
dome varchar2(7),
kv integer,
kve varchar2(5))

create or replace type regionroute_tab as table of regionroute

Функция:
create or replace function getregionroute2 return regionroute_tab is
reg regionroute_tab;
marsh regionroute_tab;
v_route regionroute_tab;
t_route regionroute_tab := regionroute_tab();
rnum integer;
unum integer;
n integer :=0;
begin
for reg in
(select rg.regionname,rg.regionid,to_char(0) as t2, to_number('0') as t3,to_char(0) as t4
from region rg where rg.divisionid=3)
loop
n := n+1;
t_route.extend;
t_route(n) :=reg;
unum:=reg.regionid;
for marsh in
(select r.routename,r.routeid, to_char(0) as t2, to_number('0') as t3,to_char(0) as t4
from route r where r.routeid=unum order by 1)
loop
n := n+1;
t_route.extend;
t_route(n) := marsh;
rnum := marsh.routeid;
for v_route in
(select s.streetname,h.housenum,nvl(h.houseextranum,' ')as t2,nvl(f.flatnum,0) as t3, nvl(f.flatextranum,' ')as t4
from street s, house h, flat f, routeflat rf
where rf.flatid=f.flatid
and f.houseid=h.houseid
and s.streetid=h.streetid
and rf.routeid=rnum
order by s.streetname,h.housenum,h.houseextranum,f.flatnum,f.flatextranum )
loop
n := n+1;
t_route.extend;
t_route(n):=v_route; <-line 37 здесь выдает ошибку
end loop;
end loop;
end loop;
return(t_route);
end getregionroute2;

Запрос:
select * from table(cast(getregionroute2()as regionroute_tab))

Ошибки:
ORA-06502 :numeric or value error
21615 :copy of an OTS(named or simple) instance failed
21614 :constraint violation for attribute number [5]
06512 :at "getregionroute2" line 37
06512 :at line 1 (в запросе)
...
Рейтинг: 0 / 0
11.11.2002, 12:59
    #32066422
T34
T34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему функция выдает ошибку?
a gde opisanie tablizy region ?
...
Рейтинг: 0 / 0
11.11.2002, 13:55
    #32066462
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему функция выдает ошибку?
С ошибкой разобрался,но вот такой вопрос.
а почему не соблюдается порядок выборки?
Есть таблица
for in
loop
запись из табл. 1
делаю запись в т4
for in
loop
запись из табл. 2
делаю запись в т4
for in
loop
запись из табл. 3
делаю запись в т4
end loop
end loop
end loop

Я думал, что
1. loop
беру 1-ю запись из т1,
записываю его в т4,
вынимаю из 1-й записи из т1 поле связи.
2. loop
Далее по этому полю вынимаю запись из т2,
записываю его в т4
вынимаю из нее поле связи.
3. loop
Выбираю записи из т3 соответствующие полю связи
вынятому из записи из т2
записываю их в т4
когда выбрано все по условию 3.
возвращаемся к п.2.
и т.д.

На выходе чего-то не то
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему функция выдает ошибку? / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]