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;
InformationsquelleAutor udarH3 | 2015-01-30
Schreibe einen Kommentar