sql >> Databasteknik >  >> RDS >> Oracle

Markör För Loop hur man skriver ut meddelande när det inte hittas

Du kan göra detta genom att ha en variabel som bara sätts in i slingan. Sedan kan du kontrollera den variabeln efter att slingan har slutförts för att se om den var inställd och bestämma om du behöver göra ytterligare arbete.

Något i stil med:

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. Jag har uppdaterat din kod eftersom du verkar ha missuppfattat hur man använder en markör för loop.

  • Cursor-for-loops skapar sin egen postvariabel implicit, så du behöver inte deklarera en själv.
  • Du behöver inte heller deklarera en markör uttryckligen - det kan göras som en del av cursor-for-loop-satsen.
  • Du behöver inte fylla i en ny post med samma värden från markör-för-slinga-posten för att använda värdena (så länge du använder dem inom markör-för-slingan, naturligtvis !)


  1. Hur man ansluter till mysql som körs i container från värddator

  2. Använda MySQL relationsdatabaser på Fedora 20

  3. Snabba upp MySQL Update/Insert Statement

  4. cx_Oracle:Hur itererar jag över en resultatuppsättning?