Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cursor For Loop cách in thông báo khi không tìm thấy

Bạn có thể làm điều này bằng cách có một biến chỉ được đặt bên trong vòng lặp. Sau đó, bạn có thể kiểm tra biến đó sau khi vòng lặp hoàn thành để xem nó đã được đặt chưa và quyết định xem bạn có cần thực hiện thêm công việc hay không.

Một cái gì đó như:

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. Tôi đã cập nhật mã của bạn vì dường như bạn đã hiểu sai cách sử dụng con trỏ cho vòng lặp.

  • Con trỏ cho vòng lặp tạo biến bản ghi của riêng chúng một cách ngầm định, vì vậy bạn không cần phải tự khai báo.
  • Bạn cũng không cần phải khai báo con trỏ một cách rõ ràng - điều này có thể được thực hiện như một phần của câu lệnh con trỏ cho vòng lặp.
  • Bạn không cần điền vào một bản ghi mới có cùng các giá trị từ bản ghi con trỏ cho vòng lặp để sử dụng các giá trị (tất nhiên, miễn là bạn đang sử dụng chúng trong con trỏ cho vòng lặp !)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 2 dấu gạch nối trong cột số?

  2. Hàm PL / SQL trong Oracle không thể thấy DBMS_AQ

  3. ORACLE Chọn Riêng biệt trả về nhiều cột và ở đâu

  4. Hàm RTRIM () trong Oracle

  5. tên bảng động trong câu lệnh chọn