Hi,
ich habe das korigiert aber ich bekomme die fehler immer noch?
Welche Fehler bekommst Du denn genau?
Ich weiß nicht, ob ich genau kapiert habe, was Du machen willst. Ich habe folgenden Code im SQLPlus eingegeben:
(Übrigens: benutze den Pre-Tag, um Code formatiert zu posten)
SQL\> set serveroutput on
SQL\> declare
2 TYPE parent\_child\_typ IS RECORD(
3 parent\_id INTEGER := 0,
4 child\_id INTEGER := 0);
5
6 parent\_child parent\_child\_typ;
7 TYPE master\_table\_type IS TABLE OF parent\_child\_typ;
8 master\_table master\_table\_type := master\_table\_type();
9
10 ---bein einfügen ist kein priblem:
11 begin
12 master\_table.extend;--null am ende einfügen
13 master\_table(master\_table.last).parent\_id := 15;
14 master\_table(master\_table.last).child\_id := 15;
15
16 master\_table.extend;--null am ende einfügen
17 master\_table(master\_table.last).parent\_id := 10;
18 master\_table(master\_table.last).child\_id := 20;
19
20 -- Das geht!
21 master\_table(1).parent\_id := 35;
22 master\_table(2).child\_id := 45;
23 -- Das würde einen Fehler produzieren
24 -- master\_table(3).child\_id := 35;
25
26 FOR i IN master\_table.FIRST .. master\_table.LAST
27 LOOP
28 dbms\_output.put\_line(i);
29 -- die 45 soll Deine form\_id.id simulieren
30 IF master\_table(i).child\_id = 45 THEN
31 dbms\_output.put\_line('Deleted: ' || i || ', id: ' || master\_table(i).child\_id);
32 master\_table.delete(i);
33 END IF;
34 END LOOP;
35 end;
36 /
1
2
Deleted: 2, id: 45
PL/SQL procedure successfully completed.
SQL\>
SQL\> set serveroutput on
SQL\> declare
2 TYPE parent\_child\_typ IS RECORD(
3 parent\_id INTEGER := 0,
4 child\_id INTEGER := 0);
5
6 parent\_child parent\_child\_typ;
7 TYPE master\_table\_type IS TABLE OF parent\_child\_typ;
8 master\_table master\_table\_type := master\_table\_type();
9
10 ---bein einfügen ist kein priblem:
11 begin
12 master\_table.extend;--null am ende einfügen
13 master\_table(master\_table.last).parent\_id := 15;
14 master\_table(master\_table.last).child\_id := 15;
15
16 master\_table.extend;--null am ende einfügen
17 master\_table(master\_table.last).parent\_id := 10;
18 master\_table(master\_table.last).child\_id := 20;
19
20 -- Das geht!
21 master\_table(1).parent\_id := 35;
22 master\_table(2).child\_id := 45;
23 -- Das würde einen Fehler produzieren
24 master\_table(3).child\_id := 35;
25
26 FOR i IN master\_table.FIRST .. master\_table.LAST
27 LOOP
28 dbms\_output.put\_line(i);
29 -- die 45 soll Deine form\_id.id simulieren
30 IF master\_table(i).child\_id = 45 THEN
31 dbms\_output.put\_line('Deleted: ' || i || ', id: ' || master\_table(i).child\_id);
32 master\_table.delete(i);
33 END IF;
34 END LOOP;
35 end;
36 /
declare
\*
ERROR at line 1:
ORA-06533: Subscript beyond count
ORA-06512: at line 35
ORA-06512: at line 24
So, jetzt bist Du dran: bitte poste Deinen Code komplett und die auftretenden Fehlermeldungen genauso, dann können wir das nachvollziehen.
Gruß
J.