sql >> Database teknologi >  >> RDS >> Oracle

Cursor For Loop hvordan man udskriver besked, når den ikke findes

Du kan gøre dette ved at have en variabel, som kun bliver sat inde i løkken. Så kan du kontrollere den variabel, efter at sløjfen er fuldført, for at se, om den blev indstillet, og beslutte, om du skal udføre yderligere arbejde.

Noget som:

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.B. Jeg har opdateret din kode, da du ser ud til at have misforstået, hvordan du bruger en markør til loop.

  • Cursor-for-loops opretter deres egen registreringsvariabel implicit, så du ikke behøver at erklære en selv.
  • Du behøver heller ikke at erklære en markør eksplicit - det kan gøres som en del af cursor-for-loop-sætningen.
  • Du behøver ikke at udfylde en ny post med de samme værdier fra cursor-for-loop recorden for at bruge værdierne (så længe du bruger dem i cursor-for-loop, selvfølgelig !)


  1. Laravel og orakel forbindelse

  2. Fordele ved at bruge cursorvariable i SQL Server (erklær @cn cursor)

  3. Sådan får du værdier, der ikke indeholder tal i MariaDB

  4. MySql - Opret visning til at læse fra flere tabeller