sql >> Database >  >> RDS >> Oracle

Cursor For Loop hoe een bericht af te drukken wanneer niet gevonden

U kunt dit doen door een variabele te hebben die alleen binnen de lus wordt ingesteld. Vervolgens kunt u die variabele controleren nadat de lus is voltooid om te zien of deze is ingesteld en beslissen of u extra werk moet doen.

Iets als:

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;
/

NB Ik heb je code bijgewerkt, omdat je blijkbaar niet goed hebt begrepen hoe je een cursor voor lus moet gebruiken.

  • Cursor-voor-loops creëren impliciet hun eigen recordvariabele, dus u hoeft er zelf geen te declareren.
  • Je hoeft een cursor ook niet expliciet te declareren - dat kan als onderdeel van de cursor-for-loop-instructie.
  • U hoeft geen nieuw record te vullen met dezelfde waarden uit het cursor-voor-lus-record om de waarden te gebruiken (zolang u ze natuurlijk binnen de cursor-voor-lus gebruikt) !)


  1. Hoe verbinding maken met mssql met behulp van pdo via PHP en Linux?

  2. Vroegste tijdstempel ondersteund in PostgreSQL

  3. Time-out voor instructies instellen voor het uitvoeren van query's?

  4. Recursieve MySql-trigger werkt niet