zadanie polega na zrobieniu bazy danych, w ktorej zawarte beda dane na temat węzłów drzewa pokazanego poniżej
[IMG]http://img404.imageshack.us/img404/5002/beztytuudvt.jpg[/IMG]
tak więc stworzyłem tabele, wzraz sekwencją i wyzwalaczem
create table drzewo (
ID number(3) not null,
numer_wezla varchar2 (30 char) not null,
nazwa_wezla varchar2 (30 char) not null,
numer_wezla_nadrzednego varchar2 (30 char) not null,
constraint drzewo_pk primary key(klucz)
);
create sequence numerowanie
start with 1
increment by 1
nomaxvalue;
create trigger wyzwalacz
before insert on drzewo
for each row
begin
select numerowanie.nextval into :new.ID from dual;
end wyzwalacz;
/
dodałem wszytskie dane
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0', 'root','brak');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.0', 'ccit','0');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1', 'iso','0');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.2', 'iso-ccit','0');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.0', 'standard','0.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.1', 'Registratio-authority','0.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.2', 'member-body','0.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3', 'Indetified-organisation','0.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6', 'DOD','0.1.3');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1', 'Internet','0.1.3.6');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.1', 'Directory','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2', 'mgmnt','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.3', 'experimental','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.4', 'private','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.5', 'security','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.6', 'snmpV2','0.1.3.6.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1', 'Mib-2','0.1.3.6.1.2');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.1', 'system','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.2', 'Interfaces','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.3', 'at','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.4', 'ip','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.5', 'icmp','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.6', 'tcp','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.2.1.7', 'udp','0.1.3.6.1.2.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.4.1', 'enterprise','0.1.3.6.1.4');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.4.1.2', 'ibm','0.1.3.6.1.4.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.4.1.11400', 'HKIVE','0.1.3.6.1.4.1');
insert into drzewo (numer_wezla, nazwa_wezla, numer_wezla_nadrzednego) values ('0.1.3.6.1.4.1.9', 'cisco','0.1.3.6.1.4.1');
nastepnie należy uzywajac polecenia SELECT wyswietlic scięzke od wybrane liścia drzewa do korzenia, czego kompletnie nie wiem jak zrobić, a później za pomocą procedury i kursora zaprezentować zawartość utworzonej tabeli w następujący sposób :
ID = 1
nazwa węzla = Root node
numer węzla = 0
węze nadrzędny = null
ID = 2
nazwa węzla = CCITT
numer węzla = 0.0
węze nadrzędny = 0
ID = 3
nazwa węzla = ISO
numer węzla = 0.1
węze nadrzędny = 0
tak wieć zrobiłem kursor (nie wiem czy poprawnie, chociaz w tej formie się kompiluje)
declare
cursor kursor is select * from drzewo;
wiersz_drzewa drzewo%ROWTYPE;
begin
open kursor;
loop
fetch kursor into wiersz_drzewa;
exit when kursor%NOTFOUND;
end loop;
close kursor;
end;
i dalej nie mam pojecia jak to ugryźć, bo kompletnie nie wiem jak wziąć się za procedury
każda wskazówka lub pomoc będzie mile widziana
pozdrawiam z góry dzięki :)