Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kursor Untuk Loop cara mencetak pesan saat tidak ditemukan

Anda dapat melakukan ini dengan memiliki variabel yang hanya diatur di dalam loop. Kemudian Anda dapat memeriksa variabel tersebut setelah loop selesai untuk melihat apakah sudah disetel, dan memutuskan apakah Anda perlu melakukan pekerjaan tambahan.

Sesuatu seperti:

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. Saya telah memperbarui kode Anda karena Anda tampaknya salah memahami cara menggunakan kursor untuk loop.

  • Cursor-for-loop membuat variabel recordnya sendiri secara implisit, jadi Anda tidak perlu mendeklarasikannya sendiri.
  • Anda juga tidak perlu mendeklarasikan kursor secara eksplisit - itu dapat dilakukan sebagai bagian dari pernyataan kursor-untuk-loop.
  • Anda tidak perlu mengisi record baru dengan nilai yang sama dari record kursor-untuk-loop untuk menggunakan nilai (selama Anda menggunakannya dalam kursor-untuk-loop, tentu saja !)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel turunan Oracle sql - aliasing opsional

  2. Buat tabel dalam prosedur

  3. Oracle, cara membuka kursor dan memilih satu kolom dari banyak menjadi variabel

  4. Pengembang SQL 4.1.2

  5. Tentang buat tabel sebagai pilihan (CTAS)