sql >> Databáze >  >> RDS >> Oracle

Cursor For Loop jak vytisknout zprávu, když není nalezena

Můžete to udělat tak, že budete mít proměnnou, která se nastaví pouze uvnitř smyčky. Poté můžete tuto proměnnou po dokončení cyklu zkontrolovat, abyste zjistili, zda byla nastavena, a rozhodnout se, zda potřebujete provést další práci.

Něco jako:

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. Aktualizoval jsem váš kód, protože se zdá, že jste špatně pochopili, jak používat kurzor pro smyčku.

  • Cursor-for-loops vytváří svou vlastní proměnnou záznamu implicitně, takže ji nemusíte deklarovat sami.
  • Také nemusíte deklarovat kurzor explicitně – to lze provést jako součást příkazu kurzoru pro smyčku.
  • Abyste mohli hodnoty použít, nemusíte naplňovat nový záznam stejnými hodnotami ze záznamu kurzoru pro smyčku (samozřejmě pokud je používáte v rámci kurzoru pro smyčku !)


  1. Je možné vytvořit typ asociativního pole Oracle mimo balíček/postup?

  2. Cizí klíč MySQL v tabulce v jiné databázi?

  3. Jsou mysql_real_escape_string() a mysql_escape_string() dostatečné pro zabezpečení aplikace?

  4. kde rownum=1 dotaz zabírá čas v Oracle