PL/SQL block problem: No data found error

后端 未结 5 1996
眼角桃花
眼角桃花 2020-12-02 14:29
SET SERVEROUTPUT ON
DECLARE
    v_student_id NUMBER := &sv_student_id;
    v_section_id NUMBER := 89;
    v_final_grade NUMBER;
    v_letter_grade CHAR(1);
BEGIN         


        
5条回答
  •  执念已碎
    2020-12-02 14:54

    When you are selecting INTO a variable and there are no records returned you should get a NO DATA FOUND error. I believe the correct way to write the above code would be to wrap the SELECT statement with it's own BEGIN/EXCEPTION/END block. Example:

    ...
    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
          ...
    

提交回复
热议问题