Ich habe zwei Tabellen, nennen wir sie Table1 und Table2. Ich habe eine Variable mit dem Namen: role
Arbeiten mit Listen oder etwas ähnliches wie DataSet
Jetzt muss ich von Table1
eine select-Anweisung tun (die mehrere Zeilen zurückgeben können):
SELECT roles INTO role FROM TABLE1
Und dann brauche ich die role
in Tabelle 2
INSERT INTO Table2(RELATION_ID, ROLES) VALUES (maxID+1, role);
Jetzt ist mein Problem, dass die erste SELECT-Anweisung mehr als 1 Zeile zurückgibt, und so kann ich den Wert nicht in die Variable setzen. Also brauche ich etwas wie eine ArrayList oder ein DataSet, um die Werte einzufügen, da ich eine Schleife über diese Werte machen und sie in eine andere Tabelle einfügen muss. Wie verwende ich eine Liste und iteriere darüber in SQL (Oracle).
Unten sehen Sie meinen Code, ein wenig vereinfacht, so dass nur mein Problem im Fokus ist. Natürlich wird der Code nicht kompiliert, nur um klar zu machen, was ich brauche. Vielen Dank.
CREATE OR REPLACE PROCEDURE "myProcedure"(eventID IN NUMBER)
IS
roleNumber NUMBER;
maxID NUMBER;
BEGIN
SELECT roles FROM TABLE1;
SELECT MAX(RELATION_ID) INTO maxID FROM SOMEOTHERTABLE;
IF maxID IS NULL
THEN
maxID := 0;
END IF;
FOR counter IN theListThatINeed
INSERT INTO Table2(RELATION_ID, ROLES) VALUES (maxID+1, roleAtCounter);
END IF;
END "myProcedure"
, wenn Sie eine Sequenz und einen Trigger Auto erhöhen Ihre RELATION_ID verwenden, wird die Lösung –