Puede hacer esto al tener una variable que solo se establece dentro del ciclo. Luego, puede verificar esa variable después de que se haya completado el ciclo para ver si se configuró y decidir si necesita hacer trabajo adicional.
Algo como:
DECLARE
course_name VARCHAR2(40) := '&course_input';
v_rows_present BOOLEAN := FALSE;
BEGIN
FOR course_rec IN (SELECT a.description,
a.cost,
a.prerequisite,
b.cost AS preq_cost
FROM course a
LEFT JOIN course b
ON a.prerequisite = b.course_no
WHERE upper(a.description) LIKE '%' || course_name || '%')
LOOP
v_rows_present := TRUE;
IF course_rec.prerequisite IS NULL
THEN
dbms_output.put_line('There is NO prerequisite course for any that starts on ' || course_name || '. Try again');
ELSE
dbms_output.put_line('Course: ' || course_rec.course_description);
dbms_output.put_line('Cost: ' || course_rec.cost);
dbms_output.put_line('Prerequisite: ' || course_rec.prerequisite);
dbms_output.put_line('Prerequisite Cost: ' || course_rec.prerequisite_cost);
dbms_output.put_line('=================================================');
END IF;
END LOOP;
IF NOT v_rows_present
THEN
dbms_output.put_line('There is NO VALID course that starts on ' || course_name || '. Try again.');
END IF;
END;
/
nótese bien Actualicé su código porque parece que no entendió bien cómo usar un cursor for loop.
- Cursor-for-loops crea su propia variable de registro implícitamente, por lo que no necesita declarar una usted mismo.
- Tampoco necesita declarar un cursor explícitamente, eso se puede hacer como parte de la instrucción cursor-for-loop.
- No es necesario que complete un nuevo registro con los mismos valores del registro de cursor por ciclo para usar los valores (siempre y cuando los use dentro del cursor por ciclo, por supuesto) !)