|
Почему функция выдает ошибку?
|
|||
---|---|---|---|
#18+
Почему функция выдает ошибку? Привожу полный текст страшного кода(такое пишу 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 (в запросе) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2002, 12:18 |
|
Почему функция выдает ошибку?
|
|||
---|---|---|---|
#18+
a gde opisanie tablizy region ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2002, 12:59 |
|
Почему функция выдает ошибку?
|
|||
---|---|---|---|
#18+
С ошибкой разобрался,но вот такой вопрос. а почему не соблюдается порядок выборки? Есть таблица 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. и т.д. На выходе чего-то не то ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2002, 13:55 |
|
|
start [/forum/topic.php?fid=52&msg=32066462&tid=1992775]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 108ms |
0 / 0 |