Zum Inhalt springen

Subscript beyond Count


Daij

Empfohlene Beiträge

Hallo zusammen,

wie einige vielleicht noch wissen, bin ich noch recht neu in der Materie - und stecke grade wieder mal fest

mein Freund google konnte mir auch nicht wirklich weiterhelfen, und ich hoffe jetzt das ihr mir ein paar schubser in die richtige Richtung geben könnt.

Ich muss Datensätze kopieren, habe das ganze in einer Loop verarbeitet und habe jetzt das problem:

Declare

TYPE sr_id_tab_type IS VARRAY(99) OF NUMBER ;

v_sr_id sr_id_tab_type;

SR NUMBER :=0;

begin

for rec blabla

(

select

...

from lala

where etc

)

65 LOOP

66

67 SR := SR+1;

68 SELECT seq_systemrole.nextval INTO v_sr_id(SR) FROM dual;

69 dbms_output.put_line('NEUE SR_ID: ' || v_sr_id(SR) || ' SR steht auf: ' || SR);

Wenn ich das ganze bei Zeile 67 anhalte, kann ich in der ausgabe auslesen, das der Wert von SR 1 ist, also 0 + 1, passt also.

Wenn ich es dann weiterlaufen lasse krieg ich folgende Fehlermeldung:

$Oracle.EXCEPTION_ORA_6533:

ORA-06533: Subscript beyond count

ORA-06512: at "lala.COPY_TEMPLATES", line 66

ORA-06512: at line 2

Ich kann damit leider nichts anfangen - bzw nicht identifizieren wo ich etwas falsch gemacht habe.

Vielleicht weiß ja einer von euch was es damit auf sich hat ?!

Grüße

Daij

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich muss Datensätze kopieren, habe das ganze in einer Loop verarbeitet und habe jetzt das problem:

Wenn Du Daten kopieren möchtest, dann genügt genau ein Statement:

insert into ziel select col1,col2,... from quelle;

Fertig. Ok ein commit brauchst noch.

Zu deinem anderen Problem: Du hast zwar einen Typ erzeugt und eine Variable dieses typs angelegt aber die Collection wurde nie initialisiert - sprich sie hat keinen ihr zugewiesenen Speicher.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich muss die Daten in die selbe Tabelle kopieren, quasi duplizieren, außerdem geht es da dann noch um untergeordnete Tabelle zu der dann Foreign Keys gegeben werden müssen, und ich will auch nicht für jede ID n eigenes insert statement schreiben.

deshalb die Loop und die Variablen.

Aber das hat ja nichts zur Frage an sich getan deshalb hab ich das weggelassen.

Wie würde die Initialisierung der collection dann aussehen ?

Wäre das einfach nur ein

v_sr_id := 0; ?

Oder hab ich da was falsch verstanden ?

Bearbeitet von Daij
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wäre das einfach nur ein

v_sr_id := 0; ?

Nein, das ist eine Zuweisung.

So reservierst Du in deinem Fall Speicher:

v_sr_id.extend(99);
Ich muss die Daten in die selbe Tabelle kopieren, quasi duplizieren
insert into tab select * from tab

Ggf. noch Spalten im SELECT durch eigene Werte anpassen und mittels WHERE Bedingung einschränken.

außerdem geht es da dann noch um untergeordnete Tabelle zu der dann Foreign Keys gegeben werden müssen, und ich will auch nicht für jede ID n eigenes insert statement schreiben.

Das müsste man sich genauer ansehen, denn meistens kann man auch das mittels SQL lösen.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, danke die Lösung hat fast so funktioniert

die Initialisierung geht anscheinend nur mit table of number, mit den varrays hat er gemeckert.

Nja das ganze war schon etwas komplexer, das lies sich mit sql nicht schön machen, ansonsten hätte ich knapp 200 verschiedene insert into tippen müssen.

Außerdem war das Ziel ein leicht erweiterbares Konstrukt. Was es jetzt ist :)

Gutes Gefühl wenn die Procedur / das Skript tut was es soll ;-)

Auf jeden Fall danke für die Hilfe :)

Grüße

Daij

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...