
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