Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL-Blockproblem:Fehler „Keine Daten gefunden“.

Wenn Sie INTO eine Variable auswählen und keine Datensätze zurückgegeben werden, sollten Sie einen NO DATA FOUND-Fehler erhalten. Ich glaube, der richtige Weg, den obigen Code zu schreiben, wäre, die SELECT-Anweisung mit einem eigenen BEGIN/EXCEPTION/END-Block zu umschließen. Beispiel:

...
v_final_grade NUMBER;
v_letter_grade CHAR(1);
BEGIN

    BEGIN
    SELECT final_grade
      INTO v_final_grade
      FROM enrollment
     WHERE student_id = v_student_id
       AND section_id = v_section_id;

    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        v_final_grade := NULL;
    END;

    CASE -- outer CASE
      WHEN v_final_grade IS NULL THEN
      ...