Loop-index-Variablen verwenden, ist ungültig in PL/SQL-Collections
Nachdem ich die Ausführung dieses erhalte ich die folgende:
PL/SQL: ORA-00942: table or view does not exist
PLS-00364: loop index variable 'EMP_REC' use is invalid
Heißt es:
In einem block oder Teilprogramm, benutzerdefinierte Datensätze sind instanziiert, wenn Sie geben Sie den block oder Unterprogramm. Sie aufhören zu existieren, wenn Sie den block beenden Unterprogramm."
Nun, ich denke, ich verstehe, was Sie sagt, denke ich... Aber zusammen mit dieser sagte, ist es eigentlich meine FÜR den Abschnitt richtig zu arbeiten?(warum nicht?), weil wie ich sehen kann, die ganzen Dinge, die passieren, in den block nicht außerhalb. Also bis zum verlassen des Blocks, nehme ich an, dass v_myrec, gibt es in der cache oder Puffer des privaten Speichers, der von den Oracle-server standardmäßig, weil, nachdem alle v_myrec ist eine "Tabelle", so zu sprechen, daher die DBMS-Paket sollte in der Lage sein zu drucken meine "emp_rec.v_sal..." und nach der Ausführung von mein block erfolgreich abgeschlossen wurde, DANN v_myrec aufhört zu existieren. Ich bin etwas verwirrt, kann jemand erklären mir das?
Wenn ich Sie alle falsch bitte korrigieren Sie mich. v
DECLARE
TYPE t_rec IS RECORD
(v_sal NUMBER(8) NOT NULL := 0,
v_min_sal NUMBER(8) DEFAULT 1000,
v_hire_date employees.hire_date%TYPE,
v_rec1 employees%ROWTYPE);
v_myrec t_rec;
BEGIN
v_myrec.v_sal := v_myrec.v_min_sal + 500;
v_myrec.v_hire_date := SYSDATE;
SELECT *
INTO v_myrec.v_rec1
FROM employees
WHERE employee_id = 100;
DBMS_OUTPUT.PUT_LINE(v_myrec.v_rec1.last_name||' '||v_myrec.v_sal||
' '||v_myrec.v_rec1.salary);
FOR emp_rec IN (SELECT *
FROM v_myrec)
LOOP
DBMS_OUTPUT.PUT_LINE(emp_rec.v_sal,...,...);
END LOOP;
END;
- Es scheint, wie Sie versuchen, verwenden Sie die Datensatz als geschachtelte Tabelle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie separate Fehler;
PLS-00364: loop index variable 'EMP_REC' use is invalid
ist ein knock-on-Fehler von Ihrem cursor unwirksam, wenn er erklärt, die bekommtPL/SQL: ORA-00942: table or view does not exist
.v_myrec
ist eine Tabelle. Wenn es eine SQL (schema-Ebene) Auflistung der Art, anstatt eine PL/SQL-Kollektion, die Sie tun könnten:ist es aber nicht, also kann man nicht. Sie können nicht beziehen sich auf eine PL/SQL-Kollektion in reinem SQL auch innerhalb einer PL/SQL-block. Und das ist nicht einmal eine Sammlung, es ist nur ein single-record-Typ, so Durchlaufen es nicht wirklich viel Sinn sowieso.